Я использую угловой 2 rc1 и новый маршрутизатор @ угловой/маршрутизаторУгловое 2 обновление компонентов приложения от выпускного маршрутизатора компонента
В приложении компонента У меня есть раздел нав и выход маршрутизатора
<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>
I впрыснуть loginService в приложении компонент и подписаться на событие в ngOnInit
ngOnInit() {
this.loginService.loginSuccess.subscribe(this.loginSuccess);
}
ngOnDestroy() {
this.loginService.loginSuccess.unsubscribe();
}
private loginSuccess(res: IAuthResponse) {
this.auth = res;
}
, когда я перейти к моей «/ вход в системе» маршрута странице/компонент моего loginService является инъекционным и loginService определяет событие
@Output() loginSuccess = new EventEmitter<IAuthResponse>();
и после успешного входа в моей службе, служба Логина вызывает событие
this.loginSuccess.next(response);
Я могу установить точку останова в приложении компонента на подписном loginSucess и передаются данные Вместе с тем, «это» не определено.
private loginSuccess(res: IAuthResponse) {
this.auth = res; //this is undefind
}
как я могу обновить компонент приложения от событий, которые triggerd от услуг, используемых в компонентах, которые размещаются на выходе маршрутизатора
Я ввожу loginService в loginComponent, и loginService имеет значение @output eventEmitter. Когда событие поднимается из службы входа в систему, компонент приложения получает событие с данными (IAuthResponse), но «это» в компоненте приложения равно null/undefined. –
Ок, 'EventEmitter' должен использоваться только в компонентах. '@Output()' в сервисе не имеет смысла.У вас есть 'function()' вместо '() =>' в любом месте вашего кода или вы передаете функцию где угодно? –
change @output() EventEmitter от моего сервиса до SubjectBehavior привел к правильному поведению, которое я искал. спасибо за разъяснение того, когда/где использовать выходной атрибут. –