Has*_*san 5 components interaction injectable angular
请考虑我的应用程序的波纹管图
EventsHub是一个简单的注射服务:
import {Injectable} from '@angular/core';
import {Subject} from 'rxjs/Subject';
@Injectable()
export class EventsHub {
private announcementSource = new Subject<string>();
messageAnnounced$ = this.announcementSource.asObservable();
announce( message : string) {
console.log('eventHub : firing...'+message);
this.announcementSource.next(message);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当从"基金","客户"或路由器插座内的任何其他组件调用"通知"功能时,父(MainApp)将不会收到任何消息.
另一方面,当我从NavigationMenu调用相同的服务功能时,MainApp接收该事件就好了.那么如何让路由组件与其父组件进行交互呢?
谢谢
此案例已在RC1和RC2上进行了测试
EventsHub确保您只在公共父组件(根组件)上提供一次。DI 为每个提供者维护一个实例。如果您在每个使用它的组件上提供它,则每个组件都会获得不同的实例。因此,一个组件在一个实例上侦听,而另一个组件在另一个实例上发出。
| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |