Angular 10 找不到 'object' 类型的不同支持对象“[object Object]”。 NgFor 仅支持绑定到 Iterables,例如 Arrays
Angular 10 Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays
我正在尝试调用我的 REST API 来获取一些数据并使用 Angular 10 在 html 页面中显示它们。
这是我的 http 服务。
public findUsers(page: number, size: number): Observable<User[]> {
return this.http.get<User[]>(AUTH_API+`users?page=${page}&size=${size}`, httpOptions);
}
这是我的服务电话。
export class AccountComponent implements OnInit {
paginator: MatPaginator = {} as MatPaginator;
loaded: boolean;
users: User[];
data:any;
constructor(private accountSerive: AccountService) { }
ngOnInit(): void {
this.paginator.pageIndex = 0;
this.paginator.pageSize = 20;
this.getUsers();
}
getUsers() {
this.data = this.accountSerive.findUsers(this.paginator.pageIndex, this.paginator.pageSize)
.subscribe((data) => {
this.users = data;
this.loaded = true;
});
}
}
这是我的 HTML 代码
<tr *ngFor="let user of users" >
<td>{{user.name}}</td>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{user.password}}</td>
<td>{{user.role}}</td>
</tr>
最后是我的用户模型
export interface User {
email: string;
password: string;
userName: string;
roles: [Role];
}
export interface Role {
name: string;
}
这里是数据内容
您从 API 收到的数据显然是以这种格式返回的:
{
content: User[],
totalElements: number
}
因此可以在名为 content
的 属性 下找到实际的结果数组。
因此,您需要像这样将调用映射到此 属性:
// return type
export interface UsersDto {
content: User[];
totalElements: number;
}
public findUsers(page: number, size: number): Observable<User[]> {
return this.http.get<UsersDto>(AUTH_API+`users?page=${page}&size=${size}`, httpOptions)
.pipe(map(result => result.content));
}
我正在尝试调用我的 REST API 来获取一些数据并使用 Angular 10 在 html 页面中显示它们。 这是我的 http 服务。
public findUsers(page: number, size: number): Observable<User[]> {
return this.http.get<User[]>(AUTH_API+`users?page=${page}&size=${size}`, httpOptions);
}
这是我的服务电话。
export class AccountComponent implements OnInit {
paginator: MatPaginator = {} as MatPaginator;
loaded: boolean;
users: User[];
data:any;
constructor(private accountSerive: AccountService) { }
ngOnInit(): void {
this.paginator.pageIndex = 0;
this.paginator.pageSize = 20;
this.getUsers();
}
getUsers() {
this.data = this.accountSerive.findUsers(this.paginator.pageIndex, this.paginator.pageSize)
.subscribe((data) => {
this.users = data;
this.loaded = true;
});
}
}
这是我的 HTML 代码
<tr *ngFor="let user of users" >
<td>{{user.name}}</td>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{user.password}}</td>
<td>{{user.role}}</td>
</tr>
最后是我的用户模型
export interface User {
email: string;
password: string;
userName: string;
roles: [Role];
}
export interface Role {
name: string;
}
这里是数据内容
您从 API 收到的数据显然是以这种格式返回的:
{
content: User[],
totalElements: number
}
因此可以在名为 content
的 属性 下找到实际的结果数组。
因此,您需要像这样将调用映射到此 属性:
// return type
export interface UsersDto {
content: User[];
totalElements: number;
}
public findUsers(page: number, size: number): Observable<User[]> {
return this.http.get<UsersDto>(AUTH_API+`users?page=${page}&size=${size}`, httpOptions)
.pipe(map(result => result.content));
}