angular - 共享服务上的组件通信
问题描述
如果您在一个组件中,并且想从另一个组件触发方法怎么办?您可以通过其他三种方式实现此目的,请在此页面上阅读更多信息。在这里,我想向您展示如何实现这一目标的最简单的示例。
假设我们有 2 个组件需要通过共享服务进行通信。假设我们在导航组件中,我们想从主组件触发方法。
解决方案
转到导航组件并创建一个引用共享服务的方法。
import { SharedService } from 'app/services/sharedService.service';
constructor(private service: SharedService){}
// Say Hello from another component
SayHello(message) {
this.service.CallComponentMethod(message);
}
现在打开Angular 服务并创建主题和发布主题的方法。
import { Subject } from 'rxjs/Subject'; // don't forget to import it!
public pushMessage = new Subject<any>();
CallComponentMethod(message) {
this.pushMessage.next(message);
}
有关您可以在此 [页面][2] 上阅读的主题的更多信息。
现在打开主组件并从共享服务订阅主题。
import { SharedService } from 'app/services/sharedService.service';
constructor(private service: SharedService){}
this.service.pushMessage.subscribe((x) => {
console.log('This is a message sent from the navigation component: ' + x);
});
推荐阅读
- python - 将 VBA 转换为 Python - 文件结构问题
- python - 如何使用正则表达式遍历字符?
- javascript - MongoDB,如何创建一个空集合?
- scala - 将多个(任意数量)火花 DataFrame 列连接成一个“|” 分隔字符串
- kubernetes - 使用 operator-sdk 或一般部署的 Kubernetes 中的控制器的协调时间是多少?您可以设置自定义时间进行侦察吗?
- reactjs - 如何修复 Uncaught (in promise) SyntaxError: Unexpected end of JSON input?
- reactjs - React Router URL 和文件夹 URL 之间的冲突
- python - 为什么“j”能识别范围的变化,而“i”却不能?
- python - 从大型组合生成器中随机采样
- python - 如何在 Airflow 上运行 Talend .jar 作业?