0

コンポーネントのレンダリング後に関数からディレクティブを呼び出すにはどうすればよいですか?コンポーネントのレンダリング後に関数からディレクティブを呼び出すにはどうすればよいですか?

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

そして私は、この関数を呼び出したい:

私は、コンポーネント持っ

export class Directive { 

functionFromDirective() { 
//something hapenns 
} 

私はこれをどのように行うことができますか?

答えて

4

あなたはこのようViewChildとコンポーネントのテンプレートから指令を取得することができます。あなたのコンポーネントで

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

:コンポーネント内からメソッドを呼び出す

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() 
    } 
} 
+0

ありがとうございます!あなたは本当に私を助けます。 –

0

は良いアイデアではありません。ディレクティブを使用するとモジュラ設計に役立ちますが、メソッドを呼び出すと、コンポーネントからディレクティブに依存することになります。

その代わり、ディレクティブはAfterViewInitインタフェースを実装する必要があります

@Directive({ 
    ..., 
    selector: '[directive]', 
}) 
export class DirectiveClass implements AfterViewInit { 
    ngAfterViewInit(): void {} 
} 

この道を、あなたのコンポーネントは、ディレクティブについて何を知っている必要はありません。

関連する問題