【问题标题】:How to handle undefined object property in angular 5如何在角度 5 中处理未定义的对象属性
【发布时间】:2018-10-26 14:46:23
【问题描述】:

我试图通过将对象属性值设置为空字符串来修复未定义的错误,但它仍然给出如下所述的错误:

ERROR TypeError: Cannot read property 'notes' of undefined

TS

let notes;
if (typeof manufacturer_field.manufacturer_guidelines[0].notes == undefined){
  notes = '';
} else {
  notes = manufacturer_field.manufacturer_guidelines[0].notes;
}

HTML

<p *ngIf="field.notes?.length">{{field.notes}}</p>

我提到了这个答案,但没有用:How to handle 'undefined' in javascript

【问题讨论】:

  • 问题不在于notes。关于field 和/或manufacturer_field.manufacturer_guidelines[0]

标签: javascript angular typescript


【解决方案1】:

如果 notes 数组元素 0 未定义,那么这将抛出错误:

if (typeof manufacturer_field.manufacturer_guidelines[0].notes == undefined){

因为您正在检查属性是否未定义,而实际上未定义的是 .manufacturer_guidelines[0] 项。

相反,您可以这样做:

if (!manufacturer_field.manufacturer_guidelines[0]){
     manufacturer_field.manufacturer_guidelines[0] = (assign it whatever value belong to this sort of item, and then once you know it is valid, then add notes)
}

另外,您将字符串分配给“notes”变量,而不是实际的数组项。

假设我有一个汽车数组:

if (!cars[0]) {
   cars[0] = <Car>{};
   cars[0].color = "blue";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2018-05-31
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多