Angularjs 通过服务的角度2组件交互
我有两个并行指令(与父子指令类似),如果可能的话,我希望它们通过使用observable的服务进行通信。我读过这本书,但它讲的是亲子互动。我试着用两个指令做一个比较,但是没有用 基本上,我想要的是创建一个服务:Angularjs 通过服务的角度2组件交互,angularjs,angular,rxjs,observable,angular-directive,Angularjs,Angular,Rxjs,Observable,Angular Directive,我有两个并行指令(与父子指令类似),如果可能的话,我希望它们通过使用observable的服务进行通信。我读过这本书,但它讲的是亲子互动。我试着用两个指令做一个比较,但是没有用 基本上,我想要的是创建一个服务: export class DirService { contentSource = new Subject(); content$ = this.contentSource.asObservable(); } 然后,使用此服务在和之间架起一座桥梁。有人能指出如何实施这一原则
export class DirService {
contentSource = new Subject();
content$ = this.contentSource.asObservable();
}
然后,使用此服务在- 我在报纸上读了这篇文章
- 如果我想让许多指令进行交流,我想observable可以让逻辑更加清晰
谢谢 在引导应用程序时,需要指定
DirService
服务:
bootstrap(AppComponent, [ DirService ]);
并将其从组件提供程序属性中删除:
@Component({
(...)
//providers: [ DirService ]
})
这样,您将为整个应用程序(以及两个组件)共享相同的服务实例
请参阅以下链接:
此行为与Angular2依赖性注入的“分层注入器”相关
有关更多详细信息,您可以查看以下问题:
提供商
@Component({
selector: 'dir2',
template: '{{field}}',
providers: [DirService]
})
然后为每个组件维护一个新实例
要获得共享服务,您可以只在引导(AppComponent,[DirService])
中添加它,或者在组件和指令的一个共同祖先中添加它,这些组件和指令定义了根组件和共享服务的范围。这样,每个后代都会得到相同的实例 另见
-
-thx!根据你的建议,这是一个使用共同祖先的工作。说得好!谢谢