Angular 无法读取已定义对象的“长度”属性
我有一个角度组件,其中包含一个包含用户的表格,它们显示正确,但打开浏览器控制台时出错:Angular 无法读取已定义对象的“长度”属性,angular,typescript,Angular,Typescript,我有一个角度组件,其中包含一个包含用户的表格,它们显示正确,但打开浏览器控制台时出错: compiler.js:18239 ERROR TypeError: Cannot read property 'length' of undefined compiler.js:18239 ERROR CONTEXT DebugContext_ {view: {…}, nodeIndex: 2, nodeDef: {…}, elDef: {…}, elView: {…}} 我已将用户加载移动到ngOnIn
compiler.js:18239 ERROR TypeError: Cannot read property 'length' of undefined
compiler.js:18239 ERROR CONTEXT DebugContext_ {view: {…}, nodeIndex: 2, nodeDef: {…}, elDef: {…}, elView: {…}}
我已将用户加载移动到ngOnInit,在那里我订阅并将数据保存在“this.users”数组中
users: User[] = [];
constructor(
public userService: UserService
) { }
ngOnInit(): void {
this.userService.getAllUsers()
.subscribe(
data => {
this.users = data;
}
);
}
HTML组件:
<nz-table [nzData]="users" [nzShowPagination]="false">
<tr>
<th>User</th>
</tr>
<tbody>
<tr *ngFor="let data of users">
<td>{{ data.userName }}</td>
</tr>
</tbody>
</nz-table>
当数据已明确定义且在列表中可见时,为什么会出现未定义错误?当数据不存在但订阅尚未完成但数组已定义时,错误会出现在第一个角度检查周期中。当订阅完成时,它会自行解决。
如果要消除此错误,只需将*ngIf=users添加到nz表标记中即可如何在组件中初始化用户数组?请在定义用户数组时尝试添加,并尝试将默认值[]设置为它这是因为在组件初始化时未定义用户对象,当数据存在时,将数据分配给它。要解决此问题,请将用户定义为空数组。用户=[];您是否在函数内部编写代码?