@zavvla
Всё только начинается :)

Передача данных между двумя дочерними компонентами в angular 2?

День добрый.

Второй день втыкаю в следующую проблему.
Подскажите, как передать данные из одного дочернего компонента, в другой? Пробовал через сервис, оформив подписку. НО из-за, того что это получается асинхронный запрос, данные в VIEW не обновляются.

из компонента А передаю код ошибки:
this._appService.onLoggerError(1);


после средствами сервиса делаю emit:
onLoggerError(messageCode: number) {
this._router.navigate(['error']);
this._emmitMessageStatus.emit(messageCode)
}


и получаю в компоненте Б

export class AppErrorComponent implements OnInit {
public _messageErrorUser: string;

constructor(private _appService: AppService) {

}

ngOnInit() {
this._appService._emmitMessageStatus.subscribe(data => {
// тут присваивается дата, но за пределами подписки, значени не обновляется
this._messageErrorUser = data;
})
// тут Undefined, а нужно чтобы было равно data
console.log(this._messageErrorUser)
}
}


p.s если можно, дайте пример, как правильно передавать данные из А в B, через сервисы.
Спасибо
  • Вопрос задан
  • 643 просмотра
Решения вопроса 1
@zavvla Автор вопроса
Всё только начинается :)
В общем решил проблему через глобальный сервис. Не уверен, что вариант верный, но тем не менее работает.
Отправитель:

this._appService.onLoggerError(1);

Глобальный сервис:

private __loggerSource = new BehaviorSubject(0);
__loggerError$ = this.__loggerSource.asObservable();
onLoggerError(code: number){
this.__loggerSource.next(code);
this._router.navigate(['error']);
}

Получатель:

this._subscription = this._appService.__loggerError$
.subscribe(item => {
this._messageErrorCode = item
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы