<分区>
我是 Angular 2 的新手。我在两个组件之间进行通信时遇到问题。当我有一个包含父组件和一些子组件的布局时,可以很容易地使用 @Input 注释设置子组件的变量。
但现在我有一个父组件(主要用于布局)和两个子组件的布局:
子组件 2 有一堆按钮,它们只创建一条简单的消息。现在我想在子组件一中显示此消息。
如何解决?提前致谢
<分区>
我是 Angular 2 的新手。我在两个组件之间进行通信时遇到问题。当我有一个包含父组件和一些子组件的布局时,可以很容易地使用 @Input 注释设置子组件的变量。
但现在我有一个父组件(主要用于布局)和两个子组件的布局:
子组件 2 有一堆按钮,它们只创建一条简单的消息。现在我想在子组件一中显示此消息。
如何解决?提前致谢
最佳答案
除了使用 @Input
/@Output
和父组件作为“桥梁”的解决方案外,一种常见的方法是引入共享服务。该服务需要在父组件中提供,以便子组件可以共享该服务的单个实例 (How do I create a singleton service in Angular 2?)。
使用 BehaviorSubject as a delegate 的基本示例:
@Injectable()
export class SharedService {
messageSource: BehaviorSubject<string> = new BehaviorSubject('');
constructor() { }
}
子组件 1:
export class ChildComponent1 {
constructor(private sharedService: SharedService) { }
sendMessage(): void {
this.sharedService.messageSource.next('Hello from child 1!');
}
}
子组件 2:
export class ChildComponent2 {
constructor(private sharedService: SharedService) { }
ngOnInit(): void {
this.sharedService.messageSource.subscribe((message) => {
console.log('Message: ', message); // => Hello from child 1!
});
}
}
另请参阅:Angular2 - Interaction between components using a service
关于angular - 如何在 Angular 两个子组件之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41954484/
相关文章:
angular - 用于 Firebase 身份验证 RxJ 的嵌套 exhausMap 和 concatMap
angular - 如何在 Angular 2中将对象从服务返回到组件?
javascript - 不显示此警报 ---> 警报 ("I am inside change");
java - 编写自定义 HtmlResponseWriter JSF
angular - 在具有多个模块(如 JHipster)的项目中嵌套 Angular 组件
angular - karma 错误 : Cannot set property 'beforePreactivation' of undefined