2017-04-09 56 views
0

沟通我有以下几点:如何使用组件通过角2路由器

<app-scrollable-area (scrolledDown)="..." class="scrollable-y"> 
     <router-outlet></router-outlet> 
</app-scrollable-area> 

的问题是我应该如何告诉有关此事件的内部组件? (scrolledDown) 也许我应该实施聚合事件的一般服务?

之前,我使用局部变量,但是当我集成路由时,情况发生了变化。

感谢您的回答!

+0

事实证明,所有必要的信息在官方文档中都已得到证实:[通过服务进行通信](https://angular.io/docs/ts/latest/cookbook/component-communication.html#bidirectional-service) – user3752919

回答

1

您可以使用滚动服务:

export class ScrollService { 
    subject: Subject; 
    constructor() { 
     this.subject = new Subject(); 
    } 
    setScroll(newY: number) { 
     this.subject.next(number); 
    } 

    registerScroll(): Observable<number> { 
     return this.subject.asObservable(); 
    } 
} 

你需要的地方你需要它注入这个服务。 通过setScroll()您向所有订户发出新的滚动。每个消费者都可以订阅registerScroll(),并在排放时进行工作。

+1

谢谢你@Avi!使用'Subject'和使用'EventEmitter'有什么区别? – user3752919

+1

好问题,EventEmitter扩展主题。指令和组件用于发出自定义事件。 – Avi