[英]Angular: Insert new .row on ngFor condition
我是Angular的新手,所以我決定嘗試他們的教程,但是做了一些小的改動。 基本上我有以下數組:
export const HEROES: Hero[] = [
{ id: 11, name: 'Mr. Nice' },
{ id: 12, name: 'Narco' },
{ id: 13, name: 'Bombasto' },
{ id: 14, name: 'Celeritas' },
{ id: 15, name: 'Magneta' },
{ id: 16, name: 'RubberMan' },
{ id: 17, name: 'Dynama' },
{ id: 18, name: 'Dr IQ' },
{ id: 19, name: 'Magma' },
{ id: 20, name: 'Tornado' }
];
而且目標是使用* ngFor在屏幕上列出它們,因此我尋找了一些方法來執行此操作,這對我來說是最合乎邏輯的事情,但它不起作用。
<div class="container-fluid bg-secondary padding-sm margin-sm rounded">
<div class="row">
<div *ngFor="let hero of heroes; let index = index">
<div class="col-lg-4 bg-lightblue rounded">
<p class="text-secondary lead">
<span class="text-info text-uppercase lead font-weight-bold">
{{ hero.name}}
</span>
Details
</p>
<p>
<span class="font-weight-bold text-success">
ID:
</span>
{{ hero.id }}
</p>
<p>
<span class="font-weight-bold text-success">
Name:
</span>
{{ hero.name }}
</p>
<label class="font-weight-bold">Change name:
<input [(ngModel)]="hero.name" class="input-md" type="text" placeholder="name">
</label>
</div>
{{ (index + 1) % 3 }}
<div class="row" *ngIf="(index + 1) % 3 == 0"></div>
</div>
</div>
</div>
我試圖做的是開始循環瀏覽列表,當列表達到3列時,它通過檢查(index + 1)%3是否等於0來添加一行,並繼續在下一行添加列。 現在,當ngIf中的條件為true時,它不會添加行。 我究竟做錯了什么?
聲明heroes
並按需要顯示在HTML中進行更新,即連續3列
heroes = [];
HEROES.forEach((hero, index) => {
if(index % 3 == 0) {
let row = [];
row.push(hero);
this.heroes.push(row);
} else {
this.heroes[this.heroes.length - 1].push(hero);
}
});
它將產生如下heroes
:
[
[ { "id": 11, "name": "Mr. Nice" }, { "id": 12, "name": "Narco" }, { "id": 13, "name": "Bombasto" } ],
[ { "id": 14, "name": "Celeritas" }, { "id": 15, "name": "Magneta" }, { "id": 16, "name": "RubberMan" } ],
[ { "id": 17, "name": "Dynama" }, { "id": 18, "name": "Dr IQ" }, { "id": 19, "name": "Magma" } ], [ { "id": 20, "name": "Tornado" } ]
]
那么您可以根據需要更新HTML。
的HTML
<div class="row" *ngFor="let rowData of heroes">
<div class="col-lg-4 bg-lightblue rounded" *ngFor="let hero of rowData">
<p class="text-secondary lead">
<span class="text-info text-uppercase lead font-weight-bold">{{ hero.name}}</span> Details
</p>
<p>
<span class="font-weight-bold text-success">ID: </span>{{ hero.id }}
</p>
<p>
<span class="font-weight-bold text-success">Name: </span>{{ hero.name }}
</p>
<label class="font-weight-bold">Change name:
<input [(ngModel)]="hero.name" class="input-md" type="text" placeholder="name">
</label>
</div>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.