我有一个Angular应用程序,我想在服务(位于共享模块中)中保存一组数据以便于访问。我将该数据作为rxjs主题,因此我可以始终获取最新信息。
当我尝试从组件X检索数据时,该组件会导入共享模块(通过服务,我想-服务是在SharedModule中提供的),我在类中声明的任何变量,无论是具有属性的对象还是简单的对象布尔值,订阅结束后,该值将不保留。
我看到,如果组件和服务是同一个功能模块的一部分,那么它会起作用,但是如果它们和服务不是同一功能模块,它将奇怪地停止。
export class X implements OnInit {
public valueIWantToChange;
constructor(private service: Service) {}
ngOnInit() {
this.service.dataSubject.subscribe(res => {
this.valueIWantToChange = res;
console.log(this.valueIWantToChange) // will show the correct value
})
} //value will be lost here
}
test() { //this is called on a test button just to check the value
console.log(this.valueIWantToChange); // element is empty
}
---------------------------------
export class Service {
data = new Subject();
dataSubject = this.data.asObservabel();
changeData(value) {
this.data.next(value);
}
}
当我单击html中的Test(测试)按钮时,我希望该值是服务中的值,但这没有发生。
非常感谢您的帮助!
答案 0 :(得分:0)
观察者订阅后,Subject
需要发出 值。如果您希望在新观察者订阅时重新发射最新值,请尝试使用BehaviorSubject
。