首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在非父-子组件之间传递数据的Angular2

在非父-子组件之间传递数据的Angular2
EN

Stack Overflow用户
提问于 2017-04-09 23:14:18
回答 2查看 942关注 0票数 0

所以我有两个组件--就它们在组件层次结构中的位置而言,一个就像另一个组件的第三个移除的祖父母--我希望在它们之间传递数据。我认为这样做的方法是编写这样的服务:

代码语言:javascript
运行
复制
@Injectable()
export class DataService {
  dataChange: EventEmitter<any> = new EventEmitter<any>();

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

然后在这两个组件上订阅它,并在它们试图传递数据时调用change函数。不过,Angular2似乎不喜欢这种情况,只是忽略了通过订阅获得的任何内容。我的控制台记录了订阅,它们被“订阅”并打开。

我可以通过调用组件本身并使用jQuery或普通Javascript来操作DOM,从而对此进行修改,但是我不能为组件本身设置值,因为Angular2也不喜欢这样做,而且只会删除所有订阅。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-10 00:42:35

有关更好的答复,请参见Github问题:

所以我所做的是错误的--我把服务作为提供者放在两个组件中,但是我需要做的是把服务作为提供者放在组件层次结构的顶端--在我的例子中是app.component.ts。

然后,只需将服务导入到这两个组件中(而不让它们提供程序)。

票数 0
EN

Stack Overflow用户

发布于 2017-04-09 23:27:01

至少在使用服务方面,您是在正确的轨道上。棱角文档编写得很好,可以在这里找到:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

doc的标题意味着父-子关系,但是只要服务被注入到两个组件中,它就应该以相同的方式工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43312920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档