Не удается назначить responsedata массиву в моем компоненте angular после подписки на ответ от web api

#angular #http #httpresponse #http-get #subscribe

#angular #http #httpresponse #http-get #Подписка

Вопрос:

Приведены фрагменты кода с точки зрения файла :

У меня есть компонент student, который я использую для получения подписки на http-ответ и назначения моему компоненту array students :

 export class StudentComponent implements OnInit {
  public students: IStudentDetails[];
  showMsgDiv = false;

  constructor(private _studentService: StudentService) { }

  ngOnInit() {

    this.getStudents();
    //console.log(this.students == null);

    if (this.students == null) {
      this.showMsgDiv = true;
    }


  **getStudents() {
      
    this._studentService.getStudents().subscribe(
       responseStudentData => {
         this.students = responseStudentData;
         //console.log(this.students);
        this.showMsgDiv = false;
      });
    }**    
  } 

Service :
  

Сервис для извлечения ответа get как наблюдаемого

 export class StudentService {

  constructor(private http: HttpClient) { }

  getStudents(): Observable<IStudentDetails[]> {
    let tempVar = this.http.get<IStudentDetails[]>('https://localhost:44343/api/student');
    return tempVar;
  }
}
  

Интерфейс для определения studentdetails и связанных с ним свойств

 Interface:

export interface IStudentDetails {  
  studentId: Number;
  firstName: String;
  lastName: String;
  class: Number;
  subject: String;
  totalMarks: Number;
}

I can see in browser console that my the responseStudentData is getting populated but it is not assigning to the students array.

Console.log statements are commented in the code attached above . The same are used for the image. 



  [1]: https://i.stack.imgur.com/MKLWD.png
  

Комментарии:

1. На самом деле ваш код выглядит нормально, просто помните, что вы имеете дело с асинхронной функцией, поэтому, если вы хотите применить какую-либо логику после извлечения данных student, это должно быть частью обратного вызова вашей подписки.