2017-04-09 85 views
0

所以我有两个组件 - 根据它们在组件层次结构中的位置,其中一个就像另一个组件的第三个被移除的祖父组件 - 并且我期望在他们。我认为这样做是写一个服务为这样的方式:Angular2在NON父子组件之间传递数据

@Injectable() 
export class DataService { 
    dataChange: EventEmitter<any> = new EventEmitter<any>(); 

    constructor() {} 
    change(data){ 
      this.dataChange.next(data) 
     } 
    } 
} 

然后订阅它在两个部件,以及打电话的时候,他们正在寻找通过数据的变化功能。看起来,虽然Angular2不喜欢这样,并且只是忽略了通过订阅而来的任何内容。我有控制台登录订阅,他们'订阅'并打开。

我可以通过调用组件本身并使用jQuery或vanilla Javascript来操作DOM,但是我无法在组件本身上设置值,因为Angular2在人们这样做时不喜欢它,并将删除所有订阅。

如何实际上以Angular2方式在两个遥远的组件之间传递数据?

编辑:打开问题在这里: https://github.com/angular/angular/issues/15856

回答

0

见Github的问题,为了更好地响应:

所以我所做的是错的,我把服务作为两个组件的供应商,但我需要做的是把服务作为顶部提供商的组件层次结构 - 在我的实例app.component.ts。

然后只需将服务导入到两个组件(不使它们提供者)。