2016-12-25 6 views
2

私は非同期バリデータ(タイムアウトでシミュレートされたもの)に割り当てられたメソッドの1つからコンポーネントにアクセスできなかったことに気付きました。なぜ非同期バリデータコールバックにコンポーネントコンテキストがないのですか?

だから私はbind()を使ってそのコンテキストを強制する必要がありました。非同期バリデータを使用すると常にこのようになりますか?または、このメソッドがそれが所属するコンテキストを保持するように他に何かがありますか?

https://embed.plnkr.co/xJz7Z66SUUFaN8QCYcrJ/

注意とバリデータの割付:

データdriven.component.tsで
this.asyncExampleValidator.bind(this) 

+0

を受けるonAddHobbyちょっとした提案:) – Alex

+0

@ASomeOneJ:どうすればplunkrコードを埋め込むことができますか?私はここstackoverflowの他の質問でそれを見たと思う –

答えて

2

あなたはUse Instance Functions を維持することができます。ここ

コードです"これは"あなたがそれが欲しいところ

ここ

onAddHobby() { 
     (<FormArray>this.myForm.get('hobbies')).push(new FormControl('', Validators.required, this.asyncExampleValidator.bind(this))); 
    } 

「これは」あなたが 期待ではないかもしれないとasyncExampleValidatorは、リンクを変更することができますので、私はあなたがポスト内の関連するコードを提供する必要があることを理解している同じ

'this' in TypeScript

+0

インスタンス関数について何も知らなかった。私はbind()の代わりにそれを試してみました。しかし、あまり推奨されない選択肢のように説明していますが、bind()を使用する方が快適です。その情報を私に指摘してくれてありがとう。 –

関連する問題