Javascript подписки результата дочерние списки не определены - PullRequest
0 голосов
/ 14 октября 2018

В моем приложении панели инструментов у меня есть следующая структура данных: Проект -> Панель инструментов -> и т. Д. Это означает, что объект project наследует список dashboard объектов.Когда пользователь входит в систему, данные проекта загружаются и наблюдаются, чтобы различные компоненты могли получить доступ к данным проекта.Но теперь, когда я пытаюсь получить доступ к определенной панели проекта в моей подписке, я получаю неопределенную ошибку.Моя подписка выглядит следующим образом:

ngOnInit(): void {

    this.dataService.projectData
      .subscribe((project: Project) => {
        this.project = project;
        console.log('Project', project);
        let d: Dashboard = project.dashboards[0];

        this.currentDashboardId = project.dashboards[0].id;
        this.dataService.changeCurrentDashboardId(this.currentDashboardId);
        this.currentSheetId = project.dashboards.find(x => x.id === this.currentDashboardId).sheets[0].id;
        this.dataloaded = true;
    });
}

Напечатанный журнал 'Project' даже правильно отображает объект.Но одной строкой позже при доступе к панели инструментов я получаю undefined.Не могу объяснить почему.Может кто-нибудь из вас, ребята, знает и может сказать мне, почему.Я ценю это.Заранее спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Используйте оператор first(), чтобы убедиться, что данные восстановлены, console.log немного хитрый, он не показывает, что произошло в нужное время, ваш код может выглядеть так:

this.dataService.projectData
.pipe(first())
.subscribe((project: Project) => {
  // your code is here
});

вы также можете использовать Filter (), чтобы ждать определенного значения в вашем ответе, например,

this.dataService.projectData
.pipe(filter(project) => project.somevalue !== undefined)
.subscribe((project: Project) => {
  // your code is here
});
...