Я использую angular 2 rc1 и новый маршрутизатор @ angular / router
В компоненте приложения у меня есть раздел навигации и выход маршрутизатора
<nav>
<a *ngIf="auth?.userName == null" [routerLink]="['/login']">Login</a>
<a *ngIf="auth?.userName != null" (click)="logout()">Logout</a>
{{auth?.userName}}
</nav>
<router-outlet></router-outlet>
Я ввожу loginService в компонент приложения и подписываюсь на событие в ngOnInit.
ngOnInit() {
this.loginService.loginSuccess.subscribe(this.loginSuccess);
}
ngOnDestroy() {
this.loginService.loginSuccess.unsubscribe();
}
private loginSuccess(res: IAuthResponse) {
this.auth = res;
}
когда я перехожу на страницу / компонент маршрута '/ login', мой loginService вводит, а loginService определяет событие
@Output() loginSuccess = new EventEmitter<IAuthResponse>();
и после успешного входа в мою службу служба входа вызывает событие
this.loginSuccess.next(response);
Я могу установить точку останова в компоненте приложения на подписанном loginSucess, и данные будут переданы, однако 'this' не определено.
private loginSuccess(res: IAuthResponse) {
this.auth = res; //this is undefind
}
как я могу обновить компонент приложения из событий, которые инициируются службами, используемыми в компонентах, размещенных в розетке маршрутизатора