2017-06-30 8 views
2

値Iは@Input()を通じていくつかの値を受け取る子コンポーネント、持っている:@InputのAngular2周波数は()

<my-component 
    [model]="node" 
    [required]="isRequired()" 
> 
</my-component> 

[required]をあなたが見ることができるよう、isRequired()メソッドの戻り値を渡します。 しかし、それは空腹になってしまう可能性があるので、質問される頻度を制限したいと思います。

角度呼び出しの頻度を設定する方法はありますかisRequired()

+1

あなたは 'Observable'使用して大丈夫ですか、角度4にいくつかのレガシーコード(角1)を移行する必要があると' Observable'早すぎるプロセスで使用することができませんか? – andreim

+0

ここにある情報は役に立ちます:https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html – DeborahK

+0

@andreim私は移行しません。 'Observable'は大丈夫だろうと思う。しかし、私はこれがどこに向かっているのか分かりません。 – Reynicke

答えて

0

いいえ、それを行う方法はありません。 Angularは、親コンポーネントのチェック時に各変更検出サイクルで呼び出されるupdateDirectives関数を持つMyComponentを格納する親コンポーネントのファクトリを作成します。詳細はThe mechanics of property bindings update in Angularをご覧ください。バインディングの変更検出を特に無効にすることはできません。変更検出器を取り外すと、operations from change detectionは実行されません。

おそらく、親コンポーネントにプロバイダサービスを作成し、子供にMyComponentコンポーネントを挿入して、いつでもそれを要求し、isRequiredを照会することができます。これらの線に沿って何か:

@Component({template: `<my-component...>`, provider: [SomeService]}) 
export class ParentComponent {} 

@Component({}) 
export class MyComponent { 
    constructor(service: SomeService) { 
    service.isRequired(); 
    } 
}