当我们在一个Angular组件中使用可观察对象时,有时候当可观察对象发生变化时,组件模板并不会自动更新来响应这些变化。这可能是由于以下原因之一导致的:
以下是一个示例组件,它订阅一个可观察对象并将其值绑定到模板中:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
import { Observable } from 'rxjs/Rx';
@Component({
selector: 'app-my-component',
template: `
The value from observable is: {{ myValue }}
`
})
export class MyComponent implements OnInit {
myValue: string;
constructor(private cdRef: ChangeDetectorRef) { }
ngOnInit() {
Observable.interval(1000).subscribe(val => {
this.myValue = 'Value is ' + val;
this.cdRef.detectChanges(); // 如果不调用此方法则模板不会更新
});
}
}
在上面的示例中,我们在组件的ngOnInit()方法中订阅了一个可观察对象,并在其值更改后在组件模板中更新了相关数据。 注意在更新值之后我们调用了ChangeDetectorRef的detectChanges()方法来强制Angular更新组件模板。
这就是解决Angular组件模板未从可观察对象中更新值的方法。
上一篇:Angular组件模板继承