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