Функция вызова в директиве
Я пытаюсь вызвать публичную функцию, которая находится внутри моей директивы от компонента, получив эту директиву через viewchild следующим образом
@ViewChild('myDirective') myDirective;
....
myDirective.nativeElement.myFunction();
Но я получаю ошибку, что myFunction не существует.
Есть ли способ вызвать функцию, которая не указана в директиве?
Ответы
Ответ 1
DEMO - вызов функции Directive из компонента - проверка браузера
консоль
1) Я надеюсь, что вы импортируете директиву myDirective.
import {myDirective} from './Directive';
2)
@ViewChild(myDirective) vc:myDirective; ///<<<@@@removed '' from ('myDirective')
3)
ngAfterViewInit(){
this.vc.myFunction(); ///<<@@@ no need to use nativeElement
}
4) Или какое-то событие нажатия кнопки
click(){
this.vc.myFunction();
}
Ответ 2
Используйте @ContentChild()
. Директива не имеет представления.
Вызовите this.myDirective.nativeElement.myFunction()
в ngAfterContentChecked()
, чтобы убедиться, что this.myDirective...
уже инициализирован.