如何订阅Angular 6中不同模块输入的值更改?

如何订阅Angular 6中不同模块输入的值更改?,angular,rxjs,observable,angular6,Angular,Rxjs,Observable,Angular6,我有一个位于根(应用程序)模块中的头组件。根据激活的路由,将在标题中呈现搜索栏 我有一个friends lazy加载模块,该模块带有一个friends list容器组件,该组件提供一个朋友列表 我想通过订阅搜索栏输入上的值更改,向好友列表组件添加搜索功能 如何向我的好友列表组件提供搜索栏值更改的可观察性?您可以将其作为@Input传递给延迟加载的组件,或通过共享服务公开输入更改使用共享服务将事件从搜索栏组件发送到好友列表组件 在服务内部创建主题,然后在输入更改时发出 服务台 public sea

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

我有一个friends lazy加载模块,该模块带有一个friends list容器组件,该组件提供一个朋友列表

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


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

您可以将其作为
@Input
传递给延迟加载的组件,或通过共享服务公开输入更改使用
共享
服务将事件从
搜索栏
组件发送到
好友列表
组件

在服务内部创建
主题
,然后在输入更改时发出

服务台

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

emitSearchInputChangesEvent(input) {
   this.searchInputChanged.next(input);
}
在好友列表组件中,订阅服务的
Subject
事件发射器

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

您可以使用共享服务将searchInputChange事件发送到
好友列表
组件。我想到了这一点,但如何将可观察到的值更改放入服务中?是的,您可以在服务中添加一个
主题
变量,然后从共享服务发送它。
@Input
如果两个组件不匹配,则无法工作父子关系。OP有没有具体说明他的情况?否。我是否使用了带有
关键字的替换项?是的,很好用。您能补充一下,为了共享服务,它必须有@Injectable({providedIn:'root'})装饰器吗?只是为了确保每个人都能正确理解这一点。谢谢
this.service.searchInputChanged.subscribe((input)=> {
     console.log(input):
})