Разница между компонентом и директивой?

Разница между компонентом и директивой в Angular заключается в их роли, функциональности и способе использования. Давайте рассмотрим эти аспекты более подробно:

  1. Компоненты (Components):
    • Компоненты в Angular являются основными строительными блоками пользовательского интерфейса.
    • Компоненты объединяют в себе шаблон (template), класс компонента (component class) и метаданные, которые определяют его поведение и внешний вид.
    • Компоненты имеют свою собственную логику и состояние, они могут содержать свои свойства и методы.
    • Компоненты можно рассматривать как независимые и переиспользуемые блоки, которые могут быть встроены в другие компоненты или использоваться в качестве отдельных страниц приложения.
    • Компоненты имеют свой собственный жизненный цикл, который включает такие события, как создание, инициализация, обновление и уничтожение.
    • Пример компонента:
import { Component } from '@angular/core'

@Component({
	selector: 'app-example',
	template: '<h1>Hello, World!</h1>'
})
export class ExampleComponent {}
  1. Директивы (Directives):
    • Директивы в Angular используются для изменения поведения и внешнего вида элементов DOM.
    • В Angular есть два типа директив: структурные и атрибутные.
    • Структурные директивы позволяют добавлять или удалять элементы DOM или изменять структуру DOM на основе условий.
    • Атрибутные директивы позволяют изменять атрибуты и стили элементов DOM.
    • Директивы могут применяться к элементам, атрибутам, классам или комментариям.
    • Директивы могут быть встроенными в Angular (например, ngIf, ngFor) или созданными пользователем.
    • Директивы обычно применяются к существующим элементам DOM и изменяют их поведение или внешний вид.
    • Пример использования директивы:
import { Directive, ElementRef } from '@angular/core'

@Directive({
	selector: '[appExample]'
})
export class ExampleDirective {
	constructor(private elementRef: ElementRef) {
		this.elementRef.nativeElement.textContent = 'Hello, World!'
	}
}

Таким образом, компоненты представляют собой более сложные и полнофункциональные элементы, которые объединяют в себе шаблон, класс компонента и метаданные. Они являются независимыми блоками пользовательского интерфейса с собственной логикой и состоянием. С другой стороны, директивы используются для изменения поведения и внешнего вида элементов DOM и применяются к существующим элементам. Они могут быть структурными или атрибутными и могут быть встроенными или созданными пользователем.