【发布时间】:2016-06-23 09:45:08
【问题描述】:
我有一个 ListComponent。当在 ListComponent 中单击一个项目时,该项目的详细信息应显示在 DetailComponent 中。两者同时出现在屏幕上,因此不涉及路由。
我如何告诉 DetailComponent ListComponent 中的哪个项目被点击了?
我考虑过向父级 (AppComponent) 发出一个事件,并让父级使用 @Input 在 DetailComponent 上设置 selectedItem.id。或者我可以使用带有可观察订阅的共享服务。
编辑: 但是,如果我需要执行其他代码,通过事件 + @Input 设置所选项目不会触发 DetailComponent。所以我不确定这是一个可以接受的解决方案。
但这两种方法似乎都比 Angular 1 的处理方式复杂得多,后者通过 $rootScope.$broadcast 或 $scope.$parent.$broadcast。
由于 Angular 2 中的所有内容都是一个组件,我很惊讶没有更多关于组件通信的信息。
是否有另一种/更直接的方法来实现这一点?
【问题讨论】:
-
你有没有找到任何方法来共享兄弟数据?我需要它作为可观察的..
标签: javascript angular typescript