繁体   English   中英

如何在Angular 6中的其他模块的输入上订阅值更改?

[英]How to subscribe for value changes on an input from a different module in Angular 6?

我有一个位于根(应用程序)模块中的标头组件。 搜索栏将根据激活的路线显示在标题中。

我有朋友朋友列表容器组件,提供好友列表延迟加载模块。

我想通过订阅搜索栏输入中的值更改来向好友列表组件添加搜索功能。

如何向我的好友列表组件提供可观察到的搜索栏值更改?

利用shared服务将事件从search bar组件发送到friends-list组件。

在服务内部创建一个Subject ,然后在更改输入时发出。

service.ts

public searchInputChanged : Subject<string> = new Subject<string>()

emitSearchInputChangesEvent(input) {
   this.searchInputChanged.next(input);
}

搜索栏组件:只需调用方法emitSearchInputChangesEvent(input)

public onChange (event) {
   this.service.emitSearchInputChangesEvent(event);
}

在好友列表组件中,订阅服务的Subject事件发射器。

this.service.searchInputChanged.subscribe((input)=> {
     console.log(input):
})

您可以将其作为@Input传递给延迟加载的组件,也可以通过共享服务公开输入更改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM