DISPLAYING DATA

1. Hiển thị các thuộc tính (property) component với phép nội suy

Cách dễ dàng nhất để hiển thị một Component property là liên kết (bind) tên property qua phép nội suy. Với nội suy, ta đặt tên property ở view template trong cặp dấu ngoặc nhọn :{{--}}

Ví dụ trong file app.ts ta có:

Có 2 thuộc tính (property) titlemyHero trong class AppComponent và chúng được hiển thị ở view bằng cú pháp : {{--tên thuộc tính--}} Angular tự động đẩy giá trị của property titlemyHero từ Component và chèn giá trị này vào trình duyệt và sẽ cập nhật hiển thị khi property thay đổi.

2. Template

Chúng ta có thể lưu trữ template của Component ở một trong hai nơi. Có thể định nghĩa nó là “inline” bằng cách sử dụng template property như đã làm ở ví dụ trên. Hoặc có thể xác định template trong một file HTML riêng biệt và liên kết với nó trong @Component sử dụng templateUrl.

Chúng ta sử dụng "style inline" vì template ít và việc trình bày trông rõ ràng hơn. Trong cả hai cách, các dữ liệu liên kết trong template có cùng truy cập đến các property trong component.

3. Hiển thị một danh sách với NgFor :

Xét ví dụ:

Chúng ta muốn hiển thị một danh sách heroes nên sẽ bắt đầu bằng việc thêm một mảng tên heroes mô phỏng vào Component. property myHero được xác định là tên đầu tiên trong mảng. Bây giờ sử dụng directive “NgFor” trong template để hiển thị ra danh sách heroes:

Chúng ta thêm directive ng-for vào thẻ <li> để đánh dấu phần tử <li> và các con của nó là phần cần lặp lại.

Nội dung trong trích dẫn ng-for (#hero of heroes) có nghĩa là lấy từng hero trong mảng heroes, lưu trữ nó trong một biến địa phương #hero, và làm cho nó có sẵn để có thể dùng trong template.

Tiền tố “#” trước hero xác định hero như một biến template địa phương. Có thể tham chiếu biến này trong template để truy cập các property của một đối tượng hero.

Để sử dụng NgFor, chúng ta sẽ đăng ký NgFor directive trong file app.ts: Đầu tiên import NgFor từ thư viện Angular2: Tiếp đó đăng ký NgFor như một directive truy cập vào template bằng cách cập nhật@Component với 1 mảng thuộc tính (property) directives, trong trường hợp này chỉ có NgFor:

Và kết quả danh sách heroes hiển thị trong View :

4. Tạo một Class cho dữ liệu

Ở ví dụ trên chúng ta đang có một mảng heroes chứa các đối tượng hero. Vì vậy sẽ cần một class Hero được viết vào một file mới có tên hero.ts :

Class Hero được xác định với một hàm khởi tạo constructor() và 2 property: idname. Class Hero trong ví dụ này được viết bằng cú pháp TypeScript nên trông ngắn gọn và đơn giản hơn.

Để sử dụng class Hero, ta xác định lại property heroes trong component để trả lại một mảng các đối tượng Hero và cũng thiết lập property myHero với đối tượng mô phỏng đầu tiên trong mảng heroes. Chúng ta sẽ cập nhật template. Ngay lúc này nó sẽ hiển thị toàn bộ đối tượng hero với hero.name được nội suy để hiển thị thuộc tính (property) name của đối tượng hero.

5. Điều kiện hiển thị với NgIf

Đôi khi ứng dụng cần hiển thị 1 View hay một phần của View chỉ thuộc các trường hợp quy định. Trong ví dụ giả sử muốn một thông báo xuất hiện nếu số lượng đối tượng hero có nhiều hơn 3. Directive NgIf sẽ chèn thêm hoặc loại bỏ một phần tử dựa trên một điều kiện đúng/sai: Biểu thức bên trong dấu nháy kép có nghĩa là khi danh sách đối tượng hiển thị của heroes có hơn 3 đối tượng thì thông báo sẽ được thêm vào DOM và hiển thị ra màn hình, nếu có ít hơn hoặc chính xác 3 đối tượng thì sẽ không có thông báo xuất hiện. Tương tự để sử dụng NgIf ở template như NgFor ta phải import NgIf từ thư viện của Angular2:

và thêm nó vào mảng directives:

6. Sử dụng CORE_DIRECTIVES:

Trong Angular2 có rất nhiều directive cốt lõi khác chẳng hạn như NgClass, NgSwitch mà chúng ra thường hay sử dụng trong ứng dụng của mình. Mở rộng câu lệnh import cho mảng directives, Angular2 cung cấp 1 mảng hằng số CORE_DIRECTIVES gôm nhiều directive thường xuyên dùng: và cập nhật directives metadata.