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

时间:2019-01-11 11:01:43

标签: angular typescript

我有两个json文件,分别称为contactsworkers。我正在这样显示来自workers JSON的联系人及其分配的工作人员:

enter image description here

  

ERROR TypeError:无法读取未定义的属性'length'

在这里我被错误困住了,我找不到代码出了什么问题。

Stackblitz DEMO

2 个答案:

答案 0 :(得分:1)

只需将您的forLoop加上条件,就像这样-

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

您正在使用视图部件调用/绑定方法的问题,并且每次在更改检测中都调用它。因此,首先this.workers为空,并且会引发错误。

Working Example

答案 1 :(得分:1)

更新您的功能,如下所示:

 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>