我有一个项目概述作为入口页面。
当我单击打开项目按钮时,projectId 将传递给 Milesstones 视图。当我在里程碑视图中时,我想使用 projectId 激活任务视图。
如果里程碑/任务是子路线,这种情况很容易实现,但它们不是!所有 3 个视图都属于顶级路由。
AFAIK 使用子路由意味着组件也必须是 ui 层次结构中的子级,因此我不能有 3 个并行/并排视图。
我还能如何实现我想要的?
我有一个项目概述作为入口页面。
当我单击打开项目按钮时,projectId 将传递给 Milesstones 视图。当我在里程碑视图中时,我想使用 projectId 激活任务视图。
如果里程碑/任务是子路线,这种情况很容易实现,但它们不是!所有 3 个视图都属于顶级路由。
AFAIK 使用子路由意味着组件也必须是 ui 层次结构中的子级,因此我不能有 3 个并行/并排视图。
我还能如何实现我想要的?
创建一个服务并将其注入到您的三个组件中。
在此服务中创建方法 setProject(projectID) 和 getProject()。当用户单击打开按钮时,在传递所选项目的服务上调用此方法。
在方法 setProject() 中,将选定的 projectID 存储在类变量中,并使用 EventEmitter 类型的类 var 发出携带选定 projectID 作为有效负载的事件。
在其他两个组件的构造函数中,立即在服务上调用 getProject() 并订阅该 EventEmitter。
这样,只要用户单击里程碑或任务链接,他们就会获得项目 ID。此外,如果用户在其他路线之一处于活动状态时选择了不同的项目,则新值将通过订阅提供给该底层组件。