开发者问题收集

为什么找不到 Typescript 变量长度?

2017-11-11
221

在 Angular 5 项目中,我在以下内容中:

inventory.component.ts:

  inventoryItems: any;
  constructor(private router: Router,) {
  }
  ngOnInit() {
    this.inventoryItems=[];
  }

我在 inventory.component.html 中引用了这样的变量:

<span class="indicator">{{inventoryItems.length}}</span>

浏览器控制台正在抱怨:

ERROR TypeError: Cannot read property 'length' of null

如果该属性在 ngOnInit 中初始化,为什么它会为空?它应该是零。

2个回答

尝试添加 *ngIf="inventoryItems"

<span *ngIf="inventoryItems" class="indicator">{{inventoryItems.length}}</span>
Sajeetharan
2017-11-11

在第一次模板初始化时它为 null ,因为 ngOnInit 是在调用第一个 ngOnChanges 之后调用的,这会最初设置 props。 检查文档

您可以实现 OnChanges (并手动处理所有 props 输入更改),或者您可以像这样设置默认值,例如 inventoryItems: any[] = [];

b3da
2017-11-11