【问题标题】:Angular 2 - Parent and children communicate via a serviceAngular 2 - 父母和孩子通过服务进行交流
【发布时间】:2016-07-31 19:57:50
【问题描述】:

这与食谱示例有关:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

我用一个 observable 做了一个服务,所以没有直接连接的组件可以通信。

如果有一个真正的 孙子 迷上了 observable 和一个 父母 正在倾听,一切都会很好地工作。

当我尝试创建 grandchild 而没有 parent 正在听 ("No provider for service") 时,出现了我的问题。

就像在说明书中一样,服务应该是仅在正在侦听 providers: [MissionService] 的组件内的提供者。

【问题讨论】:

    标签: angular angular2-services


    【解决方案1】:

    这是因为您无法通过分层注入器来利用提供程序。

    最简单的方法是在引导应用程序时定义服务的提供者:

    bootstrap(AppComponent, [ MissionService ]);
    

    不要忘记从组件的 providers 属性中删除服务。

    当组件有链接在一起时,这很有效,因为组件在其关联的注入器中查找提供程序。如果没有匹配,它会查看它的父注入器等等:

    Application
         |
    AppComponent
         |
    ChildComponent
        |
    SubChildComponent
    

    在一个组件中没有关系和定义提供者,其他组件将无法找到它。

    关于分层注入器的模式细节,你可以看看这个问题:

    【讨论】:

    • 感谢您的顺利解释!顺便说一句,我似乎在 Angular 2 知识上落后于你们,你们怎么知道这么多?您在哪里寻找答案(不包括 stackoverflow)?
    • 我们现在有 Angular 2 live 和 Angular 4 在门口。这仍然有效吗?
    猜你喜欢
    • 2017-07-20
    • 2021-06-04
    • 2017-07-01
    • 1970-01-01
    • 2018-12-27
    • 2020-02-08
    • 2020-01-30
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多