慢慢掌握angular 2,但我在某个特定问题上陷入死胡同。Angular 2 =>通知应用程序组件中的事件的路由组件
如果您有此安排;
<parent>
<child/>
</parent>
我可以通过@Input()通知孩子父母的变化,并让它听取变化。 我可以通过使用@Output()和EventEmitter通知父母更改孩子。
我现在正在看的是通知一个路由组件(一个在单击链接时动态加载的组件)关于在主要appComponent中发生的特定事件。见下面的例子;
<app>
<button (click)='addEntity()>Add</button>
<router-outlet></router-outlet>
</app>
我希望能够通知被装载到路由器出口,该按钮被点击的组件。
一个使用的例子是有多个功能(英雄/联系人/宠物等),每个功能都有自己的对话框用于添加一个实体。根据所选择的路线,它需要通知所选特征组件(例如ContactComponent)以显示其特定的细节组件/视图/模板(例如contact-detail.component)。
什么是最好的方式来实现这一目标?
干杯
看来,共享服务是实现这一目标的唯一真正方法。我已经在某处读过服务不应该使用事件发射器,这对我来说是最好的选择,因为我没有传达一个状态,但是一个意图,即addEntity是说用户想看到addEntity屏幕,它不处理可见性(因为它可能已经可见)。无论哪种方式,这确实工作,只是看起来很奇怪,因为它似乎是你订阅的观察值,其值永远不会改变。 – Mark
这解决了我的一个边缘案例问题,我真的不确定如何解决整洁的方式,否则。谢谢。 – Sam