2016-07-26 3 views
1

У меня есть компонент, который имеет эмиттер события следующим образом:Angular2 «Выход» обратный вызов

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

Это будет использоваться что-то вроде:

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

Если метод loadStuff возвращающего Promise<any>.

Мне нужен my-component, чтобы узнать, когда обещано решение loadStuff. Как это можно достичь?

ответ

2

Если вы loadStuff() возвращающие Promise это должно работать:

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

done() в <my-component> вызывается, когда обещание решает.

(не проверено)

+0

Любые альтернативы? Я надеялся на что-то с меньшей логикой в ​​HTML и идеально сделал в самом дочернем компоненте, а не делегировал его родителям. – David

+0

Вы можете передать 'loadStuff' метод' 'и' loadStuff(), а затем (...) 'там. Вы должны позаботиться о том, чтобы 'this' в' loadStuff() 'reatained как' loadStuff =() => this.doSomething() 'или' loadStuff = this.doSomething.bind (this) 'в родительском классе. –

+0

Мне интересно, «вы можете передать часть loadStuff». Что-то вроде: '@Input() loadMethod: Function;'? – David

Смежные вопросы