要解决Angular订阅了一个Observable但没有刷新/更新的问题,您可以尝试以下解决方法:
示例代码:
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { DataService } from 'path-to-data-service';
@Component({
selector: 'app-example',
template: `
{{ data }}
`
})
export class ExampleComponent implements OnInit {
data: any;
constructor(private dataService: DataService) { }
ngOnInit() {
this.refreshData();
}
refreshData() {
this.dataService.getData().subscribe(response => {
this.data = response;
});
}
}
ChangeDetectorRef
的detectChanges()
方法来实现。示例代码:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
import { Observable } from 'rxjs';
import { DataService } from 'path-to-data-service';
@Component({
selector: 'app-example',
template: `
{{ data }}
`
})
export class ExampleComponent implements OnInit {
data: any;
constructor(
private dataService: DataService,
private changeDetectorRef: ChangeDetectorRef
) { }
ngOnInit() {
this.refreshData();
}
refreshData() {
this.dataService.getData().subscribe(response => {
this.data = response;
this.changeDetectorRef.detectChanges();
});
}
}
示例代码:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
import { Observable } from 'rxjs';
import { DataService } from 'path-to-data-service';
@Component({
selector: 'app-example',
template: `
{{ data }}
`
})
export class ExampleComponent implements OnInit {
data: any;
constructor(
private dataService: DataService,
private changeDetectorRef: ChangeDetectorRef
) { }
ngOnInit() {
this.refreshData();
}
refreshData() {
setTimeout(() => {
this.dataService.getData().subscribe(response => {
this.data = response;
this.changeDetectorRef.detectChanges();
});
}, 1000);
}
}
请注意,这些解决方法的有效性取决于您的具体情况。如果问题仍然存在,请确保检查Observable的更新是否正确,并查看是否有其他错误或警告信息。