W programie Angular 2 i nowszym „wszystko jest składnikiem”. Komponenty to główny sposób, w jaki budujemy i określamy elementy i logikę na stronie, zarówno za pomocą niestandardowych elementów, jak i atrybutów, które dodają funkcjonalność do naszych istniejących komponentów.
http://learnangular2.com/components/
Ale jakie dyrektywy działają w Angular2 +?
Dyrektywy atrybutów dołączają zachowanie do elementów.
Istnieją trzy rodzaje dyrektyw w Angular:
- Komponenty - dyrektywy z szablonem.
- Dyrektywy strukturalne - zmień układ DOM, dodając i usuwając elementy DOM.
- Dyrektywy atrybutów — zmień wygląd lub zachowanie elementu, komponentu lub innej dyrektywy.
https://angular.io/docs/ts/latest/guide/attribute-directives.html
Tak więc w Angular2 i nowszych wersjach dyrektywy są atrybutami, które dodają funkcje do elementów i komponentów .
Spójrz na próbkę poniżej z Angular.io:
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
Więc co zrobi, rozszerzy ci komponenty i elementy HTML o dodanie żółtego tła i możesz użyć go jak poniżej:
<p myHighlight>Highlight me!</p>
Ale komponenty utworzą pełne elementy ze wszystkimi funkcjami, takimi jak poniżej:
import { Component } from '@angular/core';
@Component({
selector: 'my-component',
template: `
<div>Hello my name is {{name}}.
<button (click)="sayMyName()">Say my name</button>
</div>
`
})
export class MyComponent {
name: string;
constructor() {
this.name = 'Alireza'
}
sayMyName() {
console.log('My name is', this.name)
}
}
i możesz użyć go jak poniżej:
<my-component></my-component>
Gdy użyjemy znacznika w kodzie HTML, ten komponent zostanie utworzony, a konstruktor zostanie wywołany i zrenderowany.
@Component
dekorator jest tak naprawdę@Directive
dekoratorem wyposażonym w funkcje zorientowane na szablon - źródło .