最佳答案
当订阅内的变量发生更改时,为什么视图没有被更新?
我有这个密码:
Example.component.ts
testVariable: string;
ngOnInit() {
this.testVariable = 'foo';
this.someService.someObservable.subscribe(
() => console.log('success'),
(error) => console.log('error', error),
() => {
this.testVariable += '-bar';
console.log('completed', this.testVariable);
// prints: foo-Hello-bar
}
);
this.testVariable += '-Hello';
}
Example.component.html
{{testVariable}}
但是视图显示: 你好。
为什么不显示: Foo-Hello-bar?
如果我在订阅内调用 ChangeDetectorRef.detectChanges()
,它将显示正确的值,但为什么我必须这样做?
我不应该在每次订阅时调用这个方法,或者根本不应该调用这个方法(角度应该处理这个问题)。有正确的方法吗?
在 Angular/rxjs 5到6的更新中,我是否遗漏了什么?
现在我有 Angular 版本6.0.2和 rxjs 6.0。在 Angular 5.2和 rxjs 5.5.10中,同样的代码可以正常工作,而不需要调用 detectChanges
。