【发布时间】:2018-07-18 13:22:06
【问题描述】:
我在我的应用程序中使用 angular 4,我使用 behaviorSubject 在组件之间进行通信,一切正常
这是我的代码:
export class Globals {
loadStudentsByClass: BehaviorSubject<string> = new BehaviorSubject<string>(null);
}
export class ClassComponent implements OnInit {
selectNewClass() {
console.log('About to select new class', this.selectedClass);
this.globals.loadStudentsByClass.next(this.selectedClass);
this.globals.changeClassBehavior.next(true);
this.router.navigateByUrl('');
}
}
export class StudentComponent implements OnInit {
this.globals.loadStudentsByClass.subscribe(value => {
if (!isNullOrUndefined(value) && this.selectedClass !== value) {
console.log('loadStudentsByClass=> home');
this.loadStudentsByClass(this.selectedClass);
}
});
}
所以,我有组件ClassComponent 触发StudentComponent 调用函数loadStudentsByClass。
这是我唯一称此行为主题的地方,但我发现我的行为主题不止一次发出
问题是为什么 behaviorSubject 执行loadStudentsByClass 不止一次,尽管this.globals.loadStudentsByClass.next(this.selectedClass); 只被调用一次
顺便说一句,执行次数取决于我在应用程序中访问的视图数
【问题讨论】:
-
你能否在 stackblitz.com 上提供更多代码或更好的演示代码>