Angular 2 change detection explained