- vừa được xem lúc

ngFor in Angular: Everything You Need to Know

0 0 1

Người đăng: Vũ Trần Lê Anh

Theo Viblo Asia

ngFor là một trong số những Structural Directive mà bạn chắc chắc sẽ gặp phải khi làm việc với Angular. Bài viết này sẽ cùng bạn khám phá một số đặc điểm của loại Directive này nhé!

ngFor là cái gì?

ngFor là một loại Directive, cụ thể là Structural Directive trong Angular. Có nhiệm vụ duyệt qua một danh sách và tạo ra DOM Element tương ứng cho từng phần tử.

Cú pháp

<html-element *ngFor="let <item> of <items>”> <html-content></html-content>
</html-element>

Trong đó:

  • html-elemnt: một phần tử HTML bất kỳ (ví dụ: <div>, <li>, ... <custom-element>) mà bạn muốn sử dụng để hiển thị dữ liệu. Nó đóng vai trò như một "container" cho các nội dung được lặp lại
  • *ngFor="let <item> of <items>”: Đây là cú pháp của *ngFor directive trong Angular. <items> là tập hợp dữ liệu (thường là một mảng) mà bạn muốn lặp qua (ví dụ: fruits = ['Táo', 'Chuối', 'Cam']). <item> là biến cục bộ đại diện cho giá trị của mỗi phần tử tại mỗi vòng lặp.
  • html-content: đại diện cho nội dung hiển thị tại mỗi lần lặp

Ví dụ

Component Products hiển thị danh sách các sản phẩm. Mỗi sản phẩm được duyệt qua, Angular tạo một thẻ <li> với nội dung bên trong

products.components.ts Example

products.component.html Example

Kết quả: Example

Trong đó:

  • html-element tương ứng với thẻ <li>
  • item tương ứng với prod
  • items tương ứng với products
  • html-content tương ứng với nội dung bên trong thẻ <li> (dòng 8 -> 26)

Local Variables

*ngFor cung cấp một số giá trị bổ sung thêm để mô tả vị trí hoặc đặc điểm của các phần tử. Các giá trị này gồm:

  • index: number: trả về chỉ mục của phần tử
  • first: boolean: true nếu là phần tử đầu tiên
  • last: boolean: true nếu là phần tử cuối cùng
  • even: boolean: true nếu phần tử ở vị trí chẵn
  • odd: boolean: true nếu phần tử ở vị trí lẻ

Ví dụ: tạo khoảng cách giữa các phần tử (dòng 5)

products.component.html Example

TrackBy

Khi sử dụng *ngFor, Angular sẽ tự động theo dõi sự thay đổi của mảng để cập nhật lại giao diện. Tuy nhiên, sau khi phát hiện sự thay đổi, Angular xóa tất cả DOM trước đó và tạo lại từ đầu. Việc này ảnh hưởng đến hiệu suất khi dữ liệu lớn và giao diện phức tạo

Example

product.component.ts Example Example

Khi sử dụng trackBy; bạn cần cung cấp một hàm trả về giá trị duy nhất cho từng phần tử để giúp Angular biết cách theo dõi từng phần tử

products.component.html Example

products.component.ts Example

Kết quả: Example

trackById là một hàm giúp Angular biết cách theo dõi các phần tử dựa vào Id của chúng để biết được phần tử DOM nào thay đổi, từ đó cập nhật lại giao diện.

product.component.ts Example Example

Lợi ích của trackBy:

  • Tối ưu hiệu suất: Khi mảng thay đổi, Angular chỉ cần cập nhật những phần tử có sự thay đổi (dựa trên giá trị trả về từ trackBy), thay vì phải so sánh lại toàn bộ mảng.
  • Giảm độ phức tạp khi render lại giao diện: Điều này giúp ứng dụng trở nên nhanh hơn và mượt mà hơn, đặc biệt khi danh sách có nhiều phần tử hoặc thay đổi thường xuyên.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Route in Angular JS

Router là một module được đặt tại @angular/router, cung cấp cho ứng dụng Angluar của chúng ta khả năng điều hướng và hiển thị nội dung phù hợp với địa chỉ URL. Với các ứng dụng web thông thường, việc điều hướng theo URL thường sẽ do phía server đảm nhiệm, giống như hình ảnh dưới đây là ví dụ với Rai

0 0 98

- vừa được xem lúc

Có gì mới trong Angular 11

Phiên bản Angular 11.0.0 được phát hành vào tháng 11 năm 2020. Bản phát hành chính Angular 11 cung cấp các bản cập nhật trên toàn bộ nền tảng, bao gồm CLI và các components.

0 0 106

- vừa được xem lúc

Pipe trong Angular

Xin chào tất cả mọi người, bài viết này minh xin giới thiệu về Pipe trong Angular, rất mong được mọi người theo dõi. 1) Pipe trong Angular là gì. . .

0 0 131

- vừa được xem lúc

Angular Reactive Forms: Cách sử dụng FormArray

Trong bài viết này chúng ta sẽ tìm hiểu khi nào và cách sử dụng FormArray, cả trong Component và trong Template, ngoài ra chúng ta sẽ xem cách để custom validation cho nó. Vì sao chúng ta cần sử dụng FormArray.

0 0 108

- vừa được xem lúc

RxJS và Reactive Programming

1 - Stream. Streams are a sequence of values over time.

0 0 359

- vừa được xem lúc

Mapping class Java với Angular Typescript model – Chưa bao giờ dễ đến thế

Xin chào mọi người hôm nay mình giới thiệu một loại đồ chơi cực xịn cực hay ho luôn, đây là một thư viện giúp cho mọi người tạo ra 1 class Typescript trong dự án Frontend ở đây mình lấy ví dụ là Angul

0 0 97