One disappointing part of reactive programming with Angular 2 is that the framework uses traditional callbacks to handle events and listen for input changes.
Angular 2 First App Post-Mortem
Mike Ryan

Did you try to get value changes through control’s valueChange attribute? It is an observable emitting input values.

Something like this I mean:

selector: 'searchbox'
template: `
<div class="searchbox">
<input [ngFormControl]="searchInput">
directives: [FORM_DIRECTIVES]
export class Searchbox {
searchInput = new Control();
constructor(private router:Router, private searchApi:SearchAPI) {

I have no idea how to do the same for e.g. focus / blur events… Nice article though :)