Angular 6 - 错误类型错误:无法读取未定义的属性“firstName”,同时显示输出

Posted

技术标签:

【中文标题】Angular 6 - 错误类型错误:无法读取未定义的属性“firstName”,同时显示输出【英文标题】:Angular 6 - ERROR TypeError: Cannot read property 'firstName' of undefined, While showing the output 【发布时间】:2019-03-10 12:23:36 【问题描述】:

我在 Angular 6 中遇到以下错误。我正在显示从数据库返回的 json 数据。当我在 .ts 文件中执行 console.log 时,它会向我显示带有数据的整个数组。即使这给出了一个错误,说明 firstName 是未定义的,它会在相关位置显示正确的 firstName。即使我使用*ngIf="user.firstName",错误仍然相同。如果我在user.firstName 之前将另一个属性放入数组中,则会将错误赋予该属性并显示正确的输出。

例如:

user.firstName

错误类型错误:无法读取未定义的属性“firstName” 在 Object.eval [作为 updateDirectives]

user.lastName
user.firstName

错误类型错误:无法读取未定义的属性“lastName” 在 Object.eval [作为 updateDirectives] 错误只会在此处显示 lastName。

请问这是什么原因。

【问题讨论】:

【参考方案1】:

使用安全导航运算符 ?.

user?.lastName
user?.firstName

未定义的是用户。

你也可以使用

<ng-container *ngIf="user">
    user.lastName
    user.firstName
<ng-container>

【讨论】:

如何在未定义用户时显示数据。我是角度的新手,并试图弄清楚事情。谢谢 我看不到您设置用户的代码,但我将假设您发出 http 请求以获取用户。当您加载页面时,用户未定义,并且当 http 请求完成时,您将结果分配给用户。这是您从未定义用户变为具有价值的时候。 如果将用户设置为空对象 user = ; 我将用户定义为用户:用户;这是用户类的对象。如何将其设置为空 用户 = 姓:空;名字:空;

以上是关于Angular 6 - 错误类型错误:无法读取未定义的属性“firstName”,同时显示输出的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6:TypeError:无法读取未定义的属性“值”

Angular 8:错误类型错误:无法读取未定义的属性“无效”

Angular 5:错误类型错误:无法读取未定义的属性“偏移量”

Angular 6 TypeError:无法读取未定义的属性(读取“长度”)错误

错误类型错误:无法读取 Angular 7 拖放中未定义的属性“长度”

在 Angular 2 中使用 React,错误类型错误:无法读取未定义的属性“渲染”