2016-07-26 14 views
1

私は次のようにイベント・エミッターを持つコンポーネントがあります:loadStuff方法はPromise<any>返しAngular2「出力」コールバック

<my-component (onLoadRequired)="loadStuff()" /> 

:よう

@Output() onLoadRequired: EventEmitter<any> = new EventEmitter<any>(); 

これが用いられるであろうものを。

loadStuff約束がいつ解決されたかを知るには、my-componentが必要です。これはどのように達成できますか?あなたはloadStuff()リターンPromiseを作る場合

答えて

2

これは動作するはずです:約束の解決時<my-component>

<my-component #mycomponent (onLoadRequired)="loadStuff().then(val => mycomponent.done()" /> 

done()が呼び出されます。

(テストされていません)

+0

代替手段はありますか?私は、HTMLでロジックが少ないものを望んでいました。理想的には、子コンポーネント自体の中で、親に委譲するのではなく、その中で行いました。 – David

+0

'loadStuff'メソッドを' 'と' loadStuff()。then(...) 'に渡すことができます。親クラスで 'loadStuff()'の 'this'が' loadStuff =()=> this.doSomething() 'や' loadStuff = this.doSomething.bind(this) 'のようにreatainされるように注意しなければなりません。 –

+0

私は 'loadStuffメソッドを渡すことができます'の部分については疑問に思っています。次のようなものがあります: '@Input()loadMethod:Function;'? – David

関連する問題