对同一个数组使用多个 ngFor
Use multiple ngFor for same array
Angular/Ionic 菜鸟在这里。我在网上到处查看(尤其是这个网站,因为它非常有用),但找不到有同样问题的人。我想要做的是在我的 ts 组件中有一个单一的任务数组,然后在我的 html 模板中有四个不同的地方,我根据任务的类型显示这些任务(使用 ngif 来确定哪个块他们最终应该在)。
我的 ts 组件中有一个 wizardTasks 任务数组,每个任务都是一个具有名称、类型、频率和 "additional" 属性 的对象,其中包含关于任务。
因此,根据该数组,我要显示的代码如下所示:
<ion-item-group>
<ion-item *ngFor="let task of wizardTasks">
<ion-label *ngIf="task.frequency==='oneTimeOnly' && task.type==='biological/physical'">{{task.name}}</ion-label>
<ion-label *ngIf="task.frequency==='everyDay' && task.type==='biological/physical'">{{task.name}} every day</ion-label>
<ion-label *ngIf="task.frequency==='daysOfWeek' && task.type==='biological/physical'">{{task.name}} every {{task.additional}}</ion-label>
<ion-label *ngIf="task.frequency==='specificDate' && task.type==='biological/physical'">{{task.name}} on {{task.additional}}</ion-label>
</ion-item>
</ion-item-group>
除了这些块中有四个,其中 ngIf task.type 是四个组之一。
我遇到的问题是,当我这样做时,它会为所有四个位置的每个条目添加一个 space。因此,如果我有四个任务,每种任务一个,它会在适当的块中显示每个任务,但每个块中都会有 spaces,用于其他任务在该块中时的位置。
我希望这是有道理的。如果我需要添加任何其他内容,请告诉我,感谢您的帮助!
如果有帮助请截图...
根据对原始问题的评论,您似乎正在为每个类别呈现所有 <ion-item>
(wizardTask) 元素,无论它们是否属于该类别。您可以通过在使用 *ngFor
指令时过滤 wizardTasks
列表来解决此问题:
/* Component */
getWizardTasks(type: string): WizardTask[] {
return this.wizardTasks.filter(task => task.type === type);
}
/* Template */
<ion-item-group>
<ion-item *ngFor="let task of getWizardTasks('biological/physical')">
<ion-label *ngIf="task.frequency==='oneTimeOnly'">{{task.name}}</ion-label>
<ion-label *ngIf="task.frequency==='everyDay'">{{task.name}} every day</ion-label>
<ion-label *ngIf="task.frequency==='daysOfWeek'">{{task.name}} every {{task.additional}}</ion-label>
<ion-label *ngIf="task.frequency==='specificDate'">{{task.name}} on {{task.additional}}</ion-label>
</ion-item>
</ion-item-group>
Angular/Ionic 菜鸟在这里。我在网上到处查看(尤其是这个网站,因为它非常有用),但找不到有同样问题的人。我想要做的是在我的 ts 组件中有一个单一的任务数组,然后在我的 html 模板中有四个不同的地方,我根据任务的类型显示这些任务(使用 ngif 来确定哪个块他们最终应该在)。
我的 ts 组件中有一个 wizardTasks 任务数组,每个任务都是一个具有名称、类型、频率和 "additional" 属性 的对象,其中包含关于任务。
因此,根据该数组,我要显示的代码如下所示:
<ion-item-group>
<ion-item *ngFor="let task of wizardTasks">
<ion-label *ngIf="task.frequency==='oneTimeOnly' && task.type==='biological/physical'">{{task.name}}</ion-label>
<ion-label *ngIf="task.frequency==='everyDay' && task.type==='biological/physical'">{{task.name}} every day</ion-label>
<ion-label *ngIf="task.frequency==='daysOfWeek' && task.type==='biological/physical'">{{task.name}} every {{task.additional}}</ion-label>
<ion-label *ngIf="task.frequency==='specificDate' && task.type==='biological/physical'">{{task.name}} on {{task.additional}}</ion-label>
</ion-item>
</ion-item-group>
除了这些块中有四个,其中 ngIf task.type 是四个组之一。
我遇到的问题是,当我这样做时,它会为所有四个位置的每个条目添加一个 space。因此,如果我有四个任务,每种任务一个,它会在适当的块中显示每个任务,但每个块中都会有 spaces,用于其他任务在该块中时的位置。
我希望这是有道理的。如果我需要添加任何其他内容,请告诉我,感谢您的帮助!
如果有帮助请截图...
根据对原始问题的评论,您似乎正在为每个类别呈现所有 <ion-item>
(wizardTask) 元素,无论它们是否属于该类别。您可以通过在使用 *ngFor
指令时过滤 wizardTasks
列表来解决此问题:
/* Component */
getWizardTasks(type: string): WizardTask[] {
return this.wizardTasks.filter(task => task.type === type);
}
/* Template */
<ion-item-group>
<ion-item *ngFor="let task of getWizardTasks('biological/physical')">
<ion-label *ngIf="task.frequency==='oneTimeOnly'">{{task.name}}</ion-label>
<ion-label *ngIf="task.frequency==='everyDay'">{{task.name}} every day</ion-label>
<ion-label *ngIf="task.frequency==='daysOfWeek'">{{task.name}} every {{task.additional}}</ion-label>
<ion-label *ngIf="task.frequency==='specificDate'">{{task.name}} on {{task.additional}}</ion-label>
</ion-item>
</ion-item-group>