【发布时间】:2017-02-20 19:10:24
【问题描述】:
我正在使用 ionic 2 和 angular 2。现在我有两个包含对象数组的可观察对象,并且正在传递给我的模板以进行显示:
users: Observable<User[]>;
scores: Observable<Score[]>;
在我的模板中,我目前必须单独显示它们:
<ion-card *ngFor="let score of scores | async" >
<ion-item text-wrap>{{ score.total }} </ion-item>
</ion-card>
<ion-card *ngFor="let user of users | async" (click)="goToPlayer(user, league)">
<ion-item text-wrap>{{ user.id }}</ion-item>
</ion-card>
但是,我希望能够在同一行同时显示这些值,user.id 和 score.total。目前它显示所有分数,然后显示所有用户 ID。 Observable 数组总是包含相同数量的项目。
用户和分数的模型是:
export interface User {
id?: string,
email?: string,
leagues?: any[],
dateCreated: Date
};
export interface Score {
scores: any[],
total: number
};
使用 Aravind 回答中的示例邮政编码:
this.users = this.userData.loadUsers(this.league.id);
this.scores = this.leagueData.loadPlaylistScores(this.league.id);
Observable
.zip(this.users,
this.scores,
(id: number, total: number) => ({ id, total }))
.subscribe(x => console.log(x));
将三个对象打印到控制台,这是正确数量的对象。但是每个都是 Object {id: Array[0], total: Array[0]}
【问题讨论】:
-
使用相关示例 json 和可观察代码更新您的帖子
-
听起来更像是 zip 使用方式的问题,因为 zip 是为这种情况而设计的。
-
@Namirna zip 用于 Observable 内的属性,因此 OP 正在寻找这种格式 { id : 1, score : 200 } 以这种格式提取 json 响应必须相应地映射属性。看看我下面的答案
-
@Aravind 好吧,就像你回答的那样,我在想 RxJS 中的 zip,而不是 JS 中数组的“正常” zip,但是阅读我看到我错过了在我的评论中提到这一点。
-
@Namirna ,没关系。所有人都在学习。 :)