Angular中文博客

分享让你更聪明

Angular的ngFor怎么使用?

浏览:25次 评论:0次 日期:2025年02月25日 8:02:52 作者:管理员

在 Angular 中,*ngFor 是一个结构型指令,用于在模板中循环渲染一组数据。

先创建一个test组件【ng g c pages/test】

test.component.ts组件内容如下:

import {Component} from '@angular/core';
import {NgForOf} from '@angular/common';

interface PeopleInterface {
    id: number;
    name: string;
    age: number;
}

@Component({
    selector: 'app-test',
    imports: [
        NgForOf
    ],
    templateUrl: './test.component.html',
    styleUrl: './test.component.scss'
})
export class TestComponent {

    public people: PeopleInterface[] = [
        {id: 1, name: 'Alice', age: 22},
        {id: 2, name: 'Bob', age: 25},
        {id: 3, name: 'Charlie', age: 28},
        {id: 4, name: 'David', age: 30},
        {id: 5, name: 'Eve', age: 21},
        {id: 6, name: 'Frank', age: 35},
        {id: 7, name: 'Grace', age: 26},
        {id: 8, name: 'Heidi', age: 24},
        {id: 9, name: 'Ivan', age: 29},
        {id: 10, name: 'Judy', age: 27}
    ];

    // 定义 trackBy 函数
    trackByPersonId(index: number, item: PeopleInterface): number {
        return item.id;
    }
}

test.component.html内容如下:

<ul>
    <li *ngFor="let item of people; trackBy: trackByPersonId">
        ID: {{ item.id }}, Name: {{ item.name }}, Age: {{ item.age }}
    </li>
</ul>

这里,items 是一个数组或可迭代对象,item 是在每次迭代中表示当前元素的局部变量。在每次循环中,Angular 会将 item 的值替换为 items 数组中的当前元素,并渲染相应的 HTML 内容。

通过这种方式,当 items 数组发生变化时,Angular 会根据 id 来判断哪些元素需要更新,而不是重新渲染整个列表。

页面刷新你就会得到一个列表了。

关于trackBy是否要使用:

trackBy 不是必须使用的,数据量较小且不常变化,简单场景下的快速开发不用使用。

但是在数据量较大和数据频繁更新的场景下建议使用。

ngFor的其他属性:

index:

<ul>
    <li *ngFor="let item of people; trackBy: trackByPersonId;let i = index">
        INDEX: {{ i }},ID: {{ item.id }}, Name: {{ item.name }}, Age: {{ item.age }}
    </li>
</ul>

first,Last,Even,Odd

<ul>
    <li *ngFor="let item of people;  let first = first; let last = last; let even = even; let odd = odd">
        First: {{ first }}, Last: {{ last }}, Even: {{ even }}, Odd: {{ odd }}
    </li>
</ul>

完美。

发表评论