updateSubject() {
this.value = false;
this.howToUseObservables();
}
此功能会在我按下按钮时触发,但“行为”主题没有触发。下一个为什么?
value = true;
constructor() {
this.howToUseObservables().subscribe(ress => alert('in home ' + ress));
}
updateSubject() {
this.value = false;
this.howToUseObservables();
}
updateInOninle(subject: BehaviorSubject<any>) {
subject.next('from func online');
}
updateInOffline(subject: BehaviorSubject<any>) {
subject.next('from func offline');
}
howToUseObservables(): BehaviorSubject<any> {
const testSubjec: BehaviorSubject<any> = new BehaviorSubject('test');
if (this.value === true) {
this.updateInOninle(testSubjec);
} else {
this.updateInOffline(testSubjec);
}
return testSubjec;
}
答案 0 :(得分:0)
您可能会想,由于alert
howToUseObservables
BehaviorSubject<any>
的响应,即使单击按钮,响应也将运行,您将能够看到每次点击按钮,alert
。
那不会发生,因为您要从BehaviorSubject<any>
返回一个新的howToUseObservables
。因此,除非您subscribe
使用新的BehaviorSubject
,否则您不会看到in home from func offline
被警告。
尝试subscribe
到return
中的BehaviorSubject
版本的updateSubject
,您将看到响应已登录到控制台。
updateSubject() {
this.value = false;
this.howToUseObservables()
.subscribe(ress => console.log('in home ' + ress));
}
这是您推荐的Working Sample StackBlitz。