【发布时间】:2016-09-05 23:32:00
【问题描述】:
我有这个问题。
Chat 是一个父组件,它有 Messages 子组件。我有 url-s、/chat/、/chat/:id。所以我可以使用 RouteParams 在 Messages 组件中获取 :id 参数,但我需要在 Chat 组件中使用 :id。因此,如果我加载 /chat/46 然后 Chat 组件知道 46 :id
如果我将它作为指令加载,例如 <messages (Event)="handleEvent()"></messages>,我可以通过 EventEmitter 和输出传递它,但是如果我通过 <router-outlet> 加载组件,我如何将值传递回父级? EventEmitter 和 Output 在这种情况下不起作用。也许路由器中的某些东西可以解决问题。
【问题讨论】:
-
嗯,这是个好主意,但它不起作用。聊天组件有订阅但不提供任何数据,所以 .subscribe(resp => console.log(resp)) 什么也不显示。 @GünterZöchbauer
-
现在工作的是 router.isActive(),我在模板中使用它,但我需要类中的数据。 isActive() 也绑定到属性并不断调用,正如我在日志中看到的那样,所以这不是我猜的最佳解决方案。通常将函数绑定到 Angular2 中的属性是个坏主意,因为非常复杂的更改检测引擎会强制经常调用该函数。
-
这里是 plnkr plnkr.co/edit/y7PZONWELeG4f2Ywbw4k - 很奇怪,它不起作用,因为消息传递适用于返回 observable 的 http 请求。 @GünterZöchbauer