我在我的Ionic应用程序中遇到了一些问题(数据异步更新,但UI没有相应更新)。我已经在这个问题上摸不着头脑了,现在我正在尝试测试一种不同的方法:使用Observables
。但我不确定如何实施它。网上Observables
的教程专注于使用已经返回Http
的{{1}}服务。我的方案如下:
我有Observable
包含DataService
个对象的列表。该服务有一个返回此列表的getter。
Person
早些时候,我在我的组件中直接使用此列表:
export class DataService {
private _list: Person[] = [];
get list(): Person[] { return this._list }
}
现在我想向<ion-list>
<ion-item *ngFor="let person of dataService.list">
{{person.name}}
</ion-item>
</ion-list>
添加另一个getter,它将返回DataService
列表的Observable
。我不知道的是:
Person[]
。我是否将Observable
定义为Observable
属性并在构造函数中初始化它,还是直接从服务获取器返回新的DataService
?如何将列表包装在Observable
?Observable
getter? * ngFor =&#34; ???&#34; Observable
发信号通知列表已被修改?我希望这能解决我的UI更新问题。
答案 0 :(得分:13)
想出来=)
<强>的DataService 强>
.figure-wrapper { text-align: centre; }
组件模板
export class DataService {
private _list: Person[] = [];
private _observableList: BehaviorSubject<Person[]> = new BehaviorSubject([]);
get observableList(): Observable<Person[]> { return this._observableList.asObservable() }
add(person: Person) {
this._list.push(person);
this._observableList.next(this._list);
}
}
从这里得到帮助:
https://dzone.com/articles/how-to-build-angular-2-apps-using-observable-data-1 https://github.com/jhades/angular2-rxjs-observable-data-services https://coryrylan.com/blog/angular-2-observable-data-services