【发布时间】:2016-11-16 13:49:15
【问题描述】:
我正在使用 Angular2 路由器实现主从屏幕。 我有一个组件,它在其模板中定义了一个资源列表(ul/li 格式):Master part。列表中的每个资源都可以通过“routerLink”绑定单击。
在同一个模板中,我定义了一个路由器插座。这个想法是:当我单击列表中的一个资源 (ul/li) 时,Angular2 应该在路由器出口处显示/呈现一个可编辑的表单。我可以更改数据并按保存按钮。 (细节部分)
当这个资源被更新(保存)时,我希望资源列表(ul/li)也被更新,因为可能有一些数据已经改变,它也显示在资源列表中(例如资源显示名称) .
由于 Angular2 正在管理细节组件,我没有在我的 html 模板中声明该组件。但是,因为我没有声明细节组件,所以我没有对事件做出反应的钩子(比如更改事件)。也就是说,当我的表单成功更改时,我会发出一个“更改事件”。基于这样的事件,我可以在“主控部分”实现一个处理程序,以便主控可以通过刷新资源列表 (ul/li) 来更新自己。
关键是:由于在我的应用中引入了 Angular2 路由器功能,我失去了主组件和详细组件之间的关系。
问题:有没有办法解决这种模式?
【问题讨论】:
-
请添加一些代码来帮助。
-
嗨,Madhu,我会更简洁地重新表述我上面描述的问题;-)
-
嗨,Madhu,我将更简洁地重新表述我上面描述的问题 ;-) 你有可能在路由器出口组件“中”呈现的组件通知(父)组件它已经改变? |通常您会发出一个事件,并且父级可以对其做出反应。在这种情况下,router-outlet 是需要渲染的组件(在路由配置中声明)的“占位符”。由于组件本身(在 html 模板中)不存在,因此我无法声明父级或其他人可以对其做出反应的任何事件绑定。
-
我想你正在寻找Component communicate via a service,希望这会有所帮助!!
-
嗯..我理解你的想法......但是..我希望在组件之间有一种更直接的通信方式/或者通过事件发射松散地进行通信。我首先通过使用兄弟姐妹组件关系来获得另一个解决方案。嗯,它实际上是通过共同父母进行的兄弟姐妹之间的沟通。我可以使用输入绑定来传递数据和输出绑定来传递事件。但是这种方法的问题(对于我的用例)是我希望地址导航栏中的 URL 也随着每次交互而改变。这就是我探索路线解决方案的原因。
标签: angular angular2-routing angular2-template