Функция вызова в директиве

Я пытаюсь вызвать публичную функцию, которая находится внутри моей директивы от компонента, получив эту директиву через 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... уже инициализирован.