Angular2路由组件与父组件的交互

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上进行了测试

Gün*_*uer 3

EventsHub确保您只在公共父组件(根组​​件)上提供一次。DI 为每个提供者维护一个实例。如果您在每个使用它的组件上提供它,则每个组件都会获得不同的实例。因此,一个组件在一个实例上侦听,而另一个组件在另一个实例上发出。