@Cach

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

День добрый. При загрузке страницы (в app.component) достается пользователь и записываться в поток. account.component подключается по адресу /account. Если открыть страницу /account - данные из потока достаются без проблем. Но если сначала открыть какую-то другую страницу, а потом перейти на /account, данных из потока не видно. Может кто-то подсказать, в чем проблема? Спасибо
P.S. @Input для передачи данных не подходит, т.к. обращение к ним будет идти из top-navigation и router-outlet

<!-- app.component.html -->
<top-navigation></top-navigation>
<router-outlet></router-outlet>
<page-footer></page-footer>

//app.component

public ngOnInit(): void {
        if (localStorage.getItem(AuthTokenName)) {
            this.userService.getUser().then(
                (user) => this.userService.setUser(user),
                () => {
                    this.userService.logout();

                    this.router.navigate(['/']);
                }
            );
        }
    }


//service

private userSource = new Subject();

    public user = this.userSource.asObservable();

    public setUser(user) {
        this.userSource.next(user);
    }

//account component
public ngOnInit(): void {
        this.userService.user.subscribe((user) => this.user = user);
    }
  • Вопрос задан
  • 695 просмотров
Решения вопроса 1
Потому что сначала вы записываете туде юзера, а потом коннектитесь.
Subject передает в subscriber только то, что выло передано после subscribe
BehaviorSubject передает в subscriber последнее переданное значение + все то, что приехало после subscribe
Вам надо BehaviorSubject
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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