开发者问题收集

错误错误:无法读取未定义的属性“长度”[关闭]

2019-01-11
582

我有两个 json 文件,分别名为 contactsworkers 。我正在显示 workers JSON 中的联系人及其分配的工作人员,如下所示:

enter image description here

ERROR TypeError: Cannot read property 'length' of undefined

这里我遇到了错误,我无法找出代码中的问题。

Stackblitz DEMO

2个回答

只需用条件包装您的 forLoop ,就像这样 -

if (this.workers && this.workers.length) { }

问题是您正在使用视图部分调用/绑定方法,并且每次在变化检测中都会调用它。所以首先 this.workers 是空的,它会引发错误。

工作示例

Pardeep Jain
2019-01-11

按如下方式更新您的功能:

 getWorkerById(workerId) {
   if(this.workers.length > 0){
     for(let w of this.workers) {
        if(w.id === workerId) 
         return w.name;
       }
    }
 }

并为工作人员添加 ngIf

<tr *ngIf="contact.workers">
    <td>Assigned Workers</td>
    <td>
        <ul>
            <li *ngFor="let workerId of contact.workers"> 
              {{getWorkerById(workerId)}}</li>
        </ul>
    </td>
</tr>
Sneha Pawar
2019-01-11