2016-07-26 25 views
1

Ich habe eine Komponente, die ein Event-Emitter hat, wie folgt:Angular2 "Output" Rückruf

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

Dieses verwendet würde so etwas wie:

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

Wo die loadStuff Methode ein Promise<any> zurückgibt.

Ich brauche die my-component zu wissen, wenn die loadStuff Versprechen gelöst wurde. Wie kann dies erreicht werden?

Antwort

2

Wenn Sie loadStuff() Rückkehr ein Promise machen sollte diese Arbeit:

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

done() in <my-component> aufgerufen wird, wenn das Versprechen löst.

(nicht getestet)

+0

Irgendwelche Alternativen? Ich habe auf etwas mit weniger Logik im HTML gehofft und idealerweise innerhalb der Kindkomponente selbst getan, anstatt es an den Elternteil zu delegieren. – David

+0

Sie können die Methode 'loadStuff' an' 'und an' 'loadStuff(). Dann (...)' übergeben. Sie müssen darauf achten, dass 'this' in' loadStuff() 'wie 'loadStuff =() => this.doSomething()' oder 'loadStuff = this.doSomething.bind (this)' in der Elternklasse reatiniert wird. –

+0

Ich frage mich, ob Sie den LoadStuff-Methode-Teil übergeben können. Etwas wie: '@Input() loadMethod: Function;'? – David