Угловая ошибка 8 [[объект]] типа «объект». NgFor поддерживает только привязку к итерациям, таким как массивы - PullRequest
1 голос
/ 01 июля 2019

Я новичок в Angular 8, и я использую следующую структуру для извлечения данных из http get, и я пытаюсь перебрать данные, используя * ngFor. К сожалению, я получаю следующую ошибку.

Как исправить ошибку? заранее спасибо '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays. модель студента

export class Student {
    Name: string;
    Sport: string;

}

student.service.ts

    public getData(path: string): Observable<Student[]> {
        return this.http.get<Student[]>(this.mainUrl + path).pipe(
            tap(_ => console.log('fetched data'))
        );
    }

student.component.ts

import { Observable, of } from 'rxjs'; 
import { Student } from 'src/app/models/student';
import { HttpService } from 'src/services/http.service';
import { StudentService } from './student.service';


@Component ({
    selector: 'student',
    templateUrl: 'student.component.html',
    styleUrls: ['student.component.css']
})

export class StudentComponent implements OnInit {
    students: Student[];

    constructor(
        private studentService: StudentService
        ) {
    }

    getStudents(): void {

        let ppp = this.studentService.getData("get_students");
        this.studentService.getData("get_students").subscribe(
            students => { this.students = students }
            // students => {console.log(this.students)}
        );
        console.log(this.students); // prints undefined
    }


    ngOnInit() {
        this.getStudents();

    }   
}

student.component.html

<li *ngFor="let p of students">

  <div>hello</div>
</li> 

1 Ответ

1 голос
/ 01 июля 2019

Ваш ответ сервера - это объект, который вам нужен для извлечения данных ответа сервера

public getData(path: string): Observable<Student[]> {
  return this.http.get<Student[]>(this.mainUrl + path).pipe(
    map(({ student }) => student)
  );
}

Это должно работать, если ваш сервер отправляет реальный массив, если он все еще продолжает жаловаться, что вам нужно преобразовать этот ответ в массив.

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