Стандартная ситуация. У нас есть какой-то компонент, который при изменении внутри себя запрашивает данные с сервера и как-то обрабатывает их (в примере просто показывает прелоадер). В первом Ангуляре это делалось элементарно
<loader change="loadData()">
loadData возвращает промис, который ловит компонент лоадера и использует в своих целях.
В Ангуляр 2+ рекомендуют в @Output запихивать EventEmitter и плясать от этого. Разумеется, в таком случае никакой промис прочитать не удастся и приходится городить структуру с колбеками (loader-1 в примере)
Если делать как в первом Ангуляре (loader-2), то получается достаточно топорно, но могут возникнуть проблемы. В примере дочерний компонент не может засетить данные в родительский.
Как вы решаете подобную задачу?
Пример:
http://plnkr.co/edit/tAUXaV26C9hCOQ0X89P5?p=preview