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表标记中即可

如何在组件中初始化用户数组?请在定义用户数组时尝试添加,并尝试将默认值[]设置为它这是因为在组件初始化时未定义用户对象,当数据存在时,将数据分配给它。要解决此问题,请将用户定义为空数组。用户=[];您是否在函数内部编写代码?