angular - 我们可以使用相同的服务在使用相同服务的 Angular 中的多对组件之间进行通信吗
问题描述
假设我的页面有 4 个组件 Comp1、Comp2、Comp3 和 Comp4(所有不相关的组件)。如果我想在 Comp1 和 Comp2 之间进行通信。同时在 Comp3 和 Comp4 之间。是否可以使用相同的服务在它们之间进行通信?
解决方案
简短的回答是根部的可注入服务可以作为组件之间通信的一种手段。使用 EmitEvent,您可以广播和订阅特定呼叫。
@Injectable({
providedIn: 'root'
})
export class myInjectableService {
public message: EmitEvent<string> = new EmitEvent();
public SendMessage(msg:string): void {
this.message.emit(msg);
}
}
@Component({
selector: "sendComponent",
template: "<div (click)='SendMessage()'></div>"
})
export class SenderComponent {
constructor(private injectable: myInjectableService) {}
public SendMessage(): void {
this.injectable.SendMessage('Test');
}
}
@Component({
selector: "receiveComponent",
template: "<div>{{Message}}</div>"
})
export class ReceiverComponent {
constructor(private injectable: myInjectableService) {
this.injectable.subscribe((msg) => {
this.Message = msg;
})
}
public Message: string = null;
}
推荐阅读
- python - KivyMD - right/left_action_items 导致“弱引用对象不再存在”
- python - 我应该在自动编码器中使用最后一层的激活函数和损失函数来重建一系列事件?[凯拉斯]
- django - 为什么 django urls 呈现错误的路径?
- python - 如何在 Python 中读取 gzipped parquet 文件
- python - 如果字符串中包含 [] 或 {}、() 等一组字符的通配符,如何将字符串转换为列表
- c# - 给定以下代码,每 x 秒调用一次 EventHandler
- javascript - Svelte 每个循环都不会更新,而对象是动态更改的
- azure - Azure 管道在解析管道 YAML(唯一作业名称)时遇到错误
- javascript - 单击SVG圆形元素时如何带参数调用函数
- flutter - 如何解决“找不到正确的提供者”
在此 ProductItem 小部件“?