我正在Angular2的Component中实现以下功能:
export class MypageEditComponent {
ngOnInit() {
this.timer = Observable.timer(100, 100);
this.timer.subscribe(t => {
this.setFormData();
}
private setFormData() {
this.editUserAcountType = this.authStore.registerInfo.account_type;
this.editAddress = this.authStore.registerInfo.email;
this.editUserName = this.authStore.registerInfo.username;
}
}
一旦将值正确存储在
Observable.timer
中,我想停止setFormData()
的重复。但是不知道如何,请告诉我。
最佳答案
基本上有两种方法:
unsubscribe()
调用返回的Subscription对象上的subscribe()
。 只需
unsubscribe
,您就可以这样做。ngOnInit() {
this.subscription = timer(100, 100).subscribe(t => {
this.setFormData();
});
}
private setFormData() {
...
this.subscription.unsubscribe();
}
或者,您可以通过
takeUntil()
运算符使用Subject来完成Observable:this.subject = new Subject();
ngOnInit() {
timer(100, 100).pipe(
takeUntil(this.subject),
).subscribe(t => this.setFormData());
}
private setFormData() {
...
this.subject.next();
}
看看这些:
2019年1月:已针对RxJS 6更新