ngFor 迭代对象数组并计算数组的长度 属性
ngFor to iterate an array of objects and count the length of an array property
我正在 Angular 中做一个 Web 应用程序 6. 我从 Firebase 接收到一组对象,我正在尝试使用 ngFor
向用户显示详细信息。我的对象数组是这样的:
export interface Competition {
createdAt: Date;
sessions: Session[];
}
export interface Session {
date: Date;
program: Program[];
events: Event[];
}
export interface Program {
name: string;
}
export interface Event {
name: string;
}
我正在做的模板里面:
<ng-container *ngFor="let competition of competitions; index as i">
<h3>{{competition.name}}</h3>
{{competition.sessions[i].program.length}}
{{competition.sessions[i].events.length}}
</ng-container>
read property 'program' of undefined, read property 'events' of
undefined
我试过:
{{competition[i].sessions[i].program.length}}
{{competition.sessions[i].program.length}}
{{competition[i].sessions[i].program[i].length}}
我的目标是显示 program
和 events
的长度。
更改您的定义以直接定义字符串数组:
export interface Session {
date: Date;
program: string[];
events: string[];
}
您遍历 competitions
数组但尝试获取 competition.sessions[i]
。
你需要这样的东西:
<ng-container *ngFor="let competition of competitions; index as i">
<h3>{{competition.name}}</h3>
<div *ngFor="let session of competition.sessions">
{{session.program.length}}
{{session.events.length}}
</div>
</ng-container>
如果你想得到一个比赛的会话和事件的总数,你应该在你的ts文件中计算它们
this.competitionResults = this.competitions
.map(competition => competition.sessions
.reduce((res, session) =>
({
programLength: res.programLength + session.program.length,
eventLength: res.eventLength + session.events.length,
}), {
programLength: 0,
eventLength: 0,
}))
)
和HTML:
<ng-container *ngFor="let competitionResult of competitionResults">
{{ competitionResult.programLength }}
{{ competitionResult.eventLength}}
</ng-container>
我正在 Angular 中做一个 Web 应用程序 6. 我从 Firebase 接收到一组对象,我正在尝试使用 ngFor
向用户显示详细信息。我的对象数组是这样的:
export interface Competition {
createdAt: Date;
sessions: Session[];
}
export interface Session {
date: Date;
program: Program[];
events: Event[];
}
export interface Program {
name: string;
}
export interface Event {
name: string;
}
我正在做的模板里面:
<ng-container *ngFor="let competition of competitions; index as i">
<h3>{{competition.name}}</h3>
{{competition.sessions[i].program.length}}
{{competition.sessions[i].events.length}}
</ng-container>
read property 'program' of undefined, read property 'events' of undefined
我试过:
{{competition[i].sessions[i].program.length}}
{{competition.sessions[i].program.length}}
{{competition[i].sessions[i].program[i].length}}
我的目标是显示 program
和 events
的长度。
更改您的定义以直接定义字符串数组:
export interface Session {
date: Date;
program: string[];
events: string[];
}
您遍历 competitions
数组但尝试获取 competition.sessions[i]
。
你需要这样的东西:
<ng-container *ngFor="let competition of competitions; index as i">
<h3>{{competition.name}}</h3>
<div *ngFor="let session of competition.sessions">
{{session.program.length}}
{{session.events.length}}
</div>
</ng-container>
如果你想得到一个比赛的会话和事件的总数,你应该在你的ts文件中计算它们
this.competitionResults = this.competitions
.map(competition => competition.sessions
.reduce((res, session) =>
({
programLength: res.programLength + session.program.length,
eventLength: res.eventLength + session.events.length,
}), {
programLength: 0,
eventLength: 0,
}))
)
和HTML:
<ng-container *ngFor="let competitionResult of competitionResults">
{{ competitionResult.programLength }}
{{ competitionResult.eventLength}}
</ng-container>