组件无法订阅由另一个组件触发的事件

时间:2019-02-20 07:39:06

标签: angular typescript

我有服务。通讯通过服务提供。我在一个通用模块中提供服务。但是UserProfileComponent无法订阅该事件。

这是代码

import networkx as nx
import random
G=nx.Graph()
G.add_edges_from([[1,2],[1,3],[2,3],[2,4],[3,5],[4,5]])
to_remove=random.sample(G.edges(),k=2)
G.remove_edges_from(to_remove)
print(G.edges())

1 个答案:

答案 0 :(得分:0)

这可能是因为您的服务有两个实例。如果您有延迟加载的模块,那么将为延迟加载的模块创建单独的注入器。您需要适当地管理服务,以便不可能有多个实例。

最好的方法是创建一个CoreModule,它仅包含服务,并且仅在您的根应用程序模块中包含此模块。在根应用程序模块中初始化的服务适用于所有模块。此外,您可以初始化此coreModule,使其只能被初始化一次,并且在任何新的初始化上都会引发错误。

请执行以下操作:https://medium.com/@michelestieven/organizing-angular-applications-f0510761d65a 这真的是一篇很好的文章。

要阻止服务的多个实例,可以将服务构造函数修改为:

export class MyService{
    ...
    constructor(@Optional() @SkipSelf() service: MyService){
        if(service){
            throw new Error("Multiple Instances");
        }
    }

}