【发布时间】:2021-02-02 15:02:04
【问题描述】:
我想在我的模板中使用异步管道,但是从我的 api 获取数据时遇到问题。 我已经使用了受下一个数据影响的行为,然后将其保存在可观察的范围内。当我在 html 中调用 observable 时,出现此错误:
Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to
Iterables such as Arrays
friendList.ts
public friendSubject = new BehaviorSubject<any>(null);
public friend$: Observable<any> = this.friendSubject.asObservable();
getFriendList(userID: string) {
userID = this.userID;
try {
return this.mainService.getFriendList(userID).subscribe((friendList) => {
console.log(friendList)
this.friendSubject.next(friendList);
// friendList.data.forEach((friend => {
// }))
console.log(this.friendSubject)
})
}
catch (err) {
}
}
friendList.html
<ion-label class="friend-count" *ngIf="friend$ | async">{{(friend$ | async)?.length}}</ion-label>
//this works..
<div class="friend-list">
<div *ngFor="let i = index; let friend of friend$ | async" class="friend">
<div class="custom-img">
<ion-img class="friend-img" [src]="friend?.frendsView.photo"></ion-img>
</div>
<ion-label></ion-label>
</div>
</div>
我真的很想了解为什么它不起作用
【问题讨论】:
-
是否可以提供一个最小的可重现示例,例如 StackBlitz?您的评论“这有效......”是什么意思?如果你用括号括起来
(friend$ | async)有什么不同吗? -
尝试如下 *ngFor="let user of friend | async as friend; index as i"
-
异步管道正在工作,问题是您的
friend$Observable 不是Observable<any[]>类型,即您的 Observable 不返回数组而是返回一个对象。 -
是的,我的 observables 返回对象.. 我该如何转换它?
标签: angular typescript