Структурні директиви
Структурні директиви змінюють структуру DOM за допомогою додавання або видалення HTML-елементів. Структурні директиви позначаються зірочкою *
Розглянемо три структурні директиви: ngIf, ngSwitch і ngFor.
ngIf
Дозволяє видалити або, навпаки, відобразити елемент за певної умови.
<p *ngIf="true">Title</p>
ngSwitch
Дозволяє вбудувати в шаблон конструкцію switch..case і в залежності від результату її виконання виводить той чи інший блок.
<div [ngSwitch]="'Angular'">
<p *ngSwitchCase="'Angular'">Angular Course</p>
<p *ngSwitchCase="'TypeScript'">TypeScript Course</p>
<p *ngSwitchCase="'JavaScript'">JavaScript Course</p>
<p *ngSwitchDefault>HTML Course</p>
</div>
ngFor
Дозволяє перебрати в шаблоні елементи масиву.
<p *ngFor="let item of items">{{item}}</p>
Також при роботі з директивою ngFor можна користатися змінною індекс, яка при першій ітерації циклу, має значення 0 і збільшується на 1 при кожній наступній.
<p *ngFor="let item of items; let i = index">{{i + ' ' + item}}</p>
Завдання.
Створити папку core
В папці core створити папку interfaces
В папці interfaces створити файл todo.interfase.ts
export class Todo {
id: number;
title: string;
description: string;
isDone: boolean;
}
В паку interfaces додати барл файл index.ts (barrel file)
export * from './todo.interface';
Створити компонент todos
ng g c pages/todos
Додати список - todoList.
З допомогою структурної директиви ngFor вивести список todoList.
Додати кнопку show/hide details та кнопку delete.
Показувати "No Data" якщо todoList відсутній.
Виконані todo відобразити перекресленеми (з допомогою CSS).
Додати іконки чекбоксів.
Додати bootstrap стилі до списку.
<section class="container app-todos">
<ul class="list-group list-group-flush todos-list"
*ngIf="todoList">
<li class="list-group-item todos-item"
*ngFor="let item of todoList">
<header class="todo-header">
<div class="d-flex">
<i class="material-icons check-box">
{{ item.isDone ? 'check_box' : 'check_box_outline_blank' }}
</i>
<h5 [class.is-done]="item.isDone">
{{item.title}}
</h5>
</div>
<div class="todo-btn-group">
<button class="btn btn-primary"
[disabled]="!item.description">show/hide details</button>
<button class="btn btn-danger">del</button>
</div>
</header>
<div class="todo-description">
{{item.description}}
</div>
</li>
</ul>
<div class="text-center"
*ngIf="!todoList">
<p>No Data.</p>
</div>
</section>
Приклад дизайну.
Самостійна робота.
Todo List має бути адаптивним. Адекватно відображатися на екранах мобільних телефонів, планшетів та ноутбуків. Діапазон ширини дисплея від 320px до 1980px.
Показувати "Todo list is empty. Please create your first todo." якщо todoList пустий.
Створити компоненту todo-item в папці todos.
Last updated
Was this helpful?