#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, это должно быть частью обратного вызова вашей подписки.