#angular
#angular
Вопрос:
я получаю этот api «http://dummy.restapiexample.com/api/v1/employees » затем я попытался использовать его с *ngFor, но возникла эта проблема «ОШИБКА Ошибка: не удается найти другой поддерживающий объект «[object Object]» типа «object». ngFor поддерживает привязку только к итерациям, таким как массивы «.
app.component.ts
import { Component } from '@angular/core';
import { HttpClient } from "@angular/common/http";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
employes;
constructor(private http : HttpClient) {
this.http.get('http://dummy.restapiexample.com/api/v1/employees').subscribe(employ =>
{this.employes = employ})
}
}
app.component.html
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Salary</th>
<th scope="col">Age</th>
</tr>
</thead>
<tbody>
<tr *ngFor='let empo of employes ; let i = index '>
<th scope="row">{{i 1}}</th>
<td>{{empo.employee_name}}</td>
<td>{{empo.employee_salary}}</td>
<td>{{empo.employee_age}}</td>
</tr>
</tbody>
</table>
Комментарии:
1. Здесь может быть несколько проблем; 1. Вы не инициируете ’employees’ как массив, поэтому он будет ‘undefined’ для начала. 2. Вы проверили, что ответ на вызов api фактически возвращает массив ’employees’? т.Е. Действительно ли ’employe’ возвращает массив?
Ответ №1:
Ваш ответ выглядит так:
{ status: string, data: [], message: string }
итак, у вас есть два варианта:
в конструкторе {this.employes = employ.data}
или
в представлении шаблона <tr *ngFor='let empo of employes.data ; let i = index '>
один из них должен работать, если ответ API успешен
И вам лучше переместить свой http-запрос в метод OnInit, чтобы ваш компонент выглядел так:
export class AppComponent implements OnInit {
employes;
constructor(private http: HttpClient) {}
ngOnInit(): void {
this.http.get('http://dummy.restapiexample.com/api/v1/employees')
.subscribe(res => this.employes = res.data);
}
}
Комментарии:
1. ОШИБКА в src / app / app.component.ts:12:61 — ошибка TS2339: свойство ‘data’ не существует для типа ‘Object’. 12 empServices.get().subscribe(act=> this . Activities = act.data); это сообщение появляется в терминале, что это такое?? основная проблема решена, но появляется это сообщение