为了传递几个组件的数据,我创建了一个服务:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class Services {
private messageSource = new BehaviorSubject<string>("lol");
currentMessage = this.messageSource.asObservable();
constructor() {
}
changeMessage(message: string) {
this.messageSource.next(message);
console.log(message);
}
}
我创建了字符串messagesource,用于包含传递数据和Observable的当前消息。之后我创建了更改此数据的函数。
现在,在其中一个组件中的ngOnInit()中,我写道:
this.data.currentMessage.subscribe(message => this.message = message);
并在组件消息中定义:string save there message。
在我的功能中:
selectNews(news) {
this.data.changeMessage("lol3"); // string for test
}
之后,我想在其他组件中获取此字符串
再次在ngOnInit中,我复制相同的行并定义消息。但是这里的控制台日志在函数make action ....之前显示了字符串....
问题是什么?
编辑 摆弄所有整个代码:
答案 0 :(得分:2)
您要为每个组件单独提供服务。这会在每个组件中创建不同的实例。你应该在整个模块的一个地方提供它