Search code examples
angulartypescriptangular2-directivesangular2-components

How can I call function from directive after component's rendering?


How can I call function from directive after component's rendering?

I have component:

export class Component {
  ngAfterContentInit() {
  // How can i call functionFromDirective()?
  }
}

And I want call this function:

export class Directive {

functionFromDirective() {
//something hapenns
}

How can i do this?


Solution

  • You can retrieve Directive from Component's template with ViewChild like this:

    @Directive({
      ...,
      selector: '[directive]',
    })
    export class DirectiveClass {
      method() {}
    }
    

    In your component:

    import { Component, ViewChild } from '@angular/core'
    import { DirectiveClass } from './path-to-directive'
    
    @Component({
      ...,
      template: '<node directive></node>'
    })
    export class ComponentClass {
      @ViewChild(DirectiveClass) directive = null
    
      ngAfterContentInit() {
        // How can i call functionFromDirective()?
        this.directive.method()
      }
    }