当使用Angular 8的UI可观察对象时,如果未触发变更检测,可以尝试将ChangeDetectionStrategy设置为默认。下面是一个包含代码示例的解决方法:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
constructor(private cdr: ChangeDetectorRef) { }
detectChanges()
方法:this.cdr.detectChanges();
完整示例:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
import { Observable } from 'rxjs';
@Component({
selector: 'app-my-component',
template: `
{{ data$ | async }}
`,
changeDetection: ChangeDetectionStrategy.Default
})
export class MyComponent implements OnInit {
data$: Observable;
constructor(private cdr: ChangeDetectorRef) { }
ngOnInit() {
this.data$ = this.getData();
}
getData(): Observable {
// 返回一个Observable对象,例如从API获取数据
// 这里只是一个示例
return new Observable(observer => {
observer.next('Hello World');
observer.complete();
});
}
someMethod() {
// 在需要触发变更检测的地方手动调用detectChanges()方法
this.cdr.detectChanges();
}
}
在这个示例中,我们将ChangeDetectionStrategy设置为Default,默认情况下Angular会自动触发变更检测,但在某些情况下可能需要手动调用detectChanges()
方法来触发变更检测。