Директивы в Angular
Директива и ElementRef
@Directive({ selector: '[appCustomTest]' }) export class CustomTestDirective implements OnInit { @HostBinding('style.border') border: string; constructor(private el: ElementRef) { // this.el.nativeElement - является обычным Dom узлом }
ElementRef
- предоставляется Angular при создании нового экземпляра директивы и ссылается на управляющий элемент.
Класс ElementRef
предоставляет свойство nativeElement
для доступа к элементу в модели DOM и всем соответствующим свойствам (classlist
etc.).
Методы жизненного цикла директивы
Значение входного свойство директивы задается лишь после создания объекта директивы, то есть мы не сможем получить доступ к входному свойству в конструкторе. Чтобы решить эту проблему в Angular реализованы крючки (методы) жизненного цикла директивы.
ngOnInit
- вызывается после инициализации всех входных свойствngOnChanges
(OnChanges()) - вызывается при изменении значений входных свойствngDoCheck
- вызывается при запуске Angular процесса обнаружения измененийngAfterContentInit
- вызывается после инициализации контента директивыngAfterContentChecked
- вызывается после анализа контента директивы при запуске Angular процесса обнаружения измененийngOnDestroy
- вызывается перед уничтожением директивы
ngOnChanges(changes: SimpleChanges) { for (let propName in changes) { let chng = changes[propName]; let cur = JSON.stringify(chng.currentValue); let prev = JSON.stringify(chng.previousValue); this.changeLog.push(`${propName}: currentValue = ${cur}, previousValue = ${prev}`); } }
Создание привязок для управляющих элементов (работаем с DOM API: события, свойства)
Более подробно на сайте dnzl.ru: Директивы в Angular
Комментарии к статье