Как узнать, когда данные из Observable готовы к использованию в Angular 2+? - PullRequest
0 голосов
/ 29 апреля 2018

Я пытался написать небольшое веб-приложение, использующее Angular 4 и NodeJS, когда мне было трудно написать функцию, использующую переменную, которая будет инициализироваться и обновляться моей службой. Вот мои фрагменты:

getStudentsBySessionId() {
  this.sessionService
    .getStudentsBySession(this._sessionId)
    .subscribe(students => {
      this.sessionStudents = students;
      this.reInitDatatable();
  });
}

isAdded(studentId){
  this.sessionStudents.forEach(student => {
    if(student._id === studentId){
      return true;
    }
  });
  return false;
}

Однако, когда в файле шаблона вызывается функция isAdded, возникает ошибка undefined для sessionStudents.

Как правильно написать программу в этой ситуации?

Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2018

Как насчет инициализации sessionStudents пустым массивом? Тогда я считаю, что вызов функции в файле шаблона будет работать. Предполагая, что следующим является ваш компонент ...

class YourComponent {

  sessionStudents = [];

  getStudentsBySessionId() {
    this.sessionService
      .getStudentsBySession(this._sessionId)
      .subscribe(students => {
        this.sessionStudents = students;
        ...
      });
  }

  isAdded(studentId){
    ...
  }

}

Я полагаю, что шаблон должен автоматически принимать изменения, когда значение sessionStudents переназначается в обработчике успеха подписки.

Помогает ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...