我的代码有无限循环:
模板:
<ng-container *ngFor="let row of service.dataLoadAsync() | async">
Service:
dataLoadAsync(filters: FinishedCallsFilter = {}): Observable<FinishedCall[]> {
return this.httpFinishedCallsObservable(Object.assign({limit: this.limit}, {})).flatMap(response => {
this.store.dispatch(new ReplaceMany(response.items))
return this.store
})
}
我也尝试了这个功能的实现:
dataLoadAsync(filters: FinishedCallsFilter = {}): Observable<FinishedCall[]> {
this.httpFinishedCallsObservable(Object.assign({limit: this.limit}, {}))
.subscribe(response => this.store.dispatch(new ReplaceMany(response.items)))
return this.store
}
private httpFinishedCallsObservable(params: { limit: number, tag ?: string }) {
return this.http.post(this.apiUrl, params)
.map((json) => this.parseHttp(json))
.do(response => this.tagStore.dispatch(new UpdateTag(response.tag)))
}
那么,问题来了。没有http请求,evferything就可以了。但后来我尝试下载数据并更新存储,dataLoadAsync
函数在循环中调用很多次。
如何修复代码?我想使用存储来缓存
它实际上不是无限循环。
如果您在模板中绑定一个函数,则每次运行 Angular 更改检测时都会调用该函数。
一般来说,这是不好的做法。而是将结果分配给一个字段并绑定到该字段。
constructor() {
this.data = service.dataLoadAsync();
}
and
<ng-container *ngFor="let row of service.data | async">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)