【发布时间】:2019-03-25 17:30:36
【问题描述】:
我有一个从 BehaviorSubject 加载用户信息的表单。如果我编辑此表单上的任何输入并离开页面而不点击提交,则无论如何都会在主题中更新用户信息。
当我没有在 BehaviorSubject 上调用 next() 时,我不明白为什么要更新主题。
===主题类===
userDataReceiver$: Observable<UserModel>;
private userDataObserver = new BehaviorSubject(null);
constructor() {
this.userDataReceiver$ = this.userDataObserver.asObservable();
}
sendUserDataToSubscriber(data: UserModel) {
this.userDataObserver.next(data);
}
===用户类===
userDataReceiver: Subscription;
ngOnInit() {
this.userDataReceiver = this.observerService.userDataReceiver$
.subscribe(res => this.user = res);
}
ngOnDestroy() {
this.userDataReceiver.unsubscribe();
}
this.user 在 html 页面上的表单中用于加载/保存用户数据。如果在 html 页面中编辑输入而不保存表单,则离开页面仍然会导致用户对象被更新。导航回 html 页面将显示更新后的用户输入。
【问题讨论】: