Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення Власних Директив у Angular | Mastering Angular Directives and Pipes
Вступ до Angular

bookСтворення Власних Директив у Angular

Angular має набір вбудованих директив, таких як ngIf, ngFor та ngClass. Однак ви також можете створювати власні користувацькі директиви для виконання специфічних завдань у вашому застосунку. Розглянемо, як створити таку директиву на практичному прикладі.

Створення користувацької директиви

Спочатку рекомендується організувати код, створивши окрему папку для ваших директив. Назвемо її directives.

Ця команда створює нову папку з назвою directives у каталозі app та додає до неї файл нової директиви:

  • highlight-on-complete.directive.ts – містить логіку директиви;

  • highlight-on-complete.directive.spec.ts – файл модульних тестів (можна видалити, якщо не потрібен).

Ось як виглядає базова структура директиви:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Визначення функціоналу директиви

Ця директива підсвічує елемент завдання зеленим кольором, якщо воно позначене як виконане. В іншому випадку стилі будуть очищені.

Щоб повідомити Angular, що цей клас є директивою, його декорують за допомогою @Directive:

@Directive({
  selector: '[appHighlightOnComplete]'
})

Селектор [appHighlightOnComplete] означає, що директива буде використовуватися як атрибут, а не як тег або структурна директива.

У вашому HTML ви застосуєте її так:

<div [appHighlightOnComplete]="task.completed"></div>

Реакція директиви на зміни

Щоб виявляти зміни у вхідному параметрі completed, реалізуємо інтерфейс OnChanges:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Ми також визначаємо вхідну властивість для отримання значення з компонента:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Що це робить:

  • Повідомляє Angular, що значення буде надано з шаблону (раніше ми передавали task.complete із шаблону);

  • Прив'язує внутрішню властивість completed директиви до значення, переданого із шаблону;

  • Встановлює значення за замовчуванням true (яке буде перевизначено після отримання фактичних даних).

Безпечний доступ до DOM

Angular використовує впровадження залежностей для надання доступу до DOM і інструментів рендерингу.

У конструкторі ми впроваджуємо:

highlight-on-complete.ts

highlight-on-complete.ts

copy

ElementRef надає посилання на хост-елемент DOM. Renderer2 дозволяє безпечно змінювати стилі та атрибути без прямого маніпулювання DOM.

Реакція на зміни з ngOnChanges

Тепер реалізуємо основну логіку в ngOnChanges, який виконується щоразу, коли змінюється значення вхідного параметра.

Повна реалізація:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Метод ngOnChanges викликається щоразу, коли Angular виявляє зміни у вхідних властивостях директиви.

У цьому випадку він реагує на оновлення значення completed, яке передається з шаблону. Якщо completed дорівнює true, директива додає зелений контур і світло-зелений фон до елемента. Якщо значення false, ці стилі видаляються, і елемент повертається до початкового вигляду. Це забезпечує візуальне позначення виконаних завдань.

Ця користувацька директива дозволяє інкапсулювати поведінку стилів у багаторазовий, чистий спосіб. Тепер ви можете застосовувати її до будь-якого елемента у вашому застосунку без дублювання логіки у різних компонентах. Це чудовий приклад того, як система директив Angular допомагає писати більш модульний і підтримуваний код.

question mark

Що робить директива highlight-on-complete?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookСтворення Власних Директив у Angular

Angular має набір вбудованих директив, таких як ngIf, ngFor та ngClass. Однак ви також можете створювати власні користувацькі директиви для виконання специфічних завдань у вашому застосунку. Розглянемо, як створити таку директиву на практичному прикладі.

Створення користувацької директиви

Спочатку рекомендується організувати код, створивши окрему папку для ваших директив. Назвемо її directives.

Ця команда створює нову папку з назвою directives у каталозі app та додає до неї файл нової директиви:

  • highlight-on-complete.directive.ts – містить логіку директиви;

  • highlight-on-complete.directive.spec.ts – файл модульних тестів (можна видалити, якщо не потрібен).

Ось як виглядає базова структура директиви:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Визначення функціоналу директиви

Ця директива підсвічує елемент завдання зеленим кольором, якщо воно позначене як виконане. В іншому випадку стилі будуть очищені.

Щоб повідомити Angular, що цей клас є директивою, його декорують за допомогою @Directive:

@Directive({
  selector: '[appHighlightOnComplete]'
})

Селектор [appHighlightOnComplete] означає, що директива буде використовуватися як атрибут, а не як тег або структурна директива.

У вашому HTML ви застосуєте її так:

<div [appHighlightOnComplete]="task.completed"></div>

Реакція директиви на зміни

Щоб виявляти зміни у вхідному параметрі completed, реалізуємо інтерфейс OnChanges:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Ми також визначаємо вхідну властивість для отримання значення з компонента:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Що це робить:

  • Повідомляє Angular, що значення буде надано з шаблону (раніше ми передавали task.complete із шаблону);

  • Прив'язує внутрішню властивість completed директиви до значення, переданого із шаблону;

  • Встановлює значення за замовчуванням true (яке буде перевизначено після отримання фактичних даних).

Безпечний доступ до DOM

Angular використовує впровадження залежностей для надання доступу до DOM і інструментів рендерингу.

У конструкторі ми впроваджуємо:

highlight-on-complete.ts

highlight-on-complete.ts

copy

ElementRef надає посилання на хост-елемент DOM. Renderer2 дозволяє безпечно змінювати стилі та атрибути без прямого маніпулювання DOM.

Реакція на зміни з ngOnChanges

Тепер реалізуємо основну логіку в ngOnChanges, який виконується щоразу, коли змінюється значення вхідного параметра.

Повна реалізація:

highlight-on-complete.ts

highlight-on-complete.ts

copy

Метод ngOnChanges викликається щоразу, коли Angular виявляє зміни у вхідних властивостях директиви.

У цьому випадку він реагує на оновлення значення completed, яке передається з шаблону. Якщо completed дорівнює true, директива додає зелений контур і світло-зелений фон до елемента. Якщо значення false, ці стилі видаляються, і елемент повертається до початкового вигляду. Це забезпечує візуальне позначення виконаних завдань.

Ця користувацька директива дозволяє інкапсулювати поведінку стилів у багаторазовий, чистий спосіб. Тепер ви можете застосовувати її до будь-якого елемента у вашому застосунку без дублювання логіки у різних компонентах. Це чудовий приклад того, як система директив Angular допомагає писати більш модульний і підтримуваний код.

question mark

Що робить директива highlight-on-complete?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4
some-alt