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

时间:2017-11-11 19:52:11

标签: javascript angular

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

inventory.component.ts:

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

我在inventory.component.html

中引用了这样的变量
<span class="indicator">{{inventoryItems.length}}</span>

浏览器控制台抱怨:

  

错误类型错误:无法读取属性&#39;长度&#39;为null

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

2 个答案:

答案 0 :(得分:1)

尝试添加 *ngIf="inventoryItems"

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

答案 1 :(得分:1)

在第一次模板初始化时为null,因为在调用第一个ngOnInit之后调用了ngOnChanges,它最初设置了道具。 check docs

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