Angular 无法读取json中未定义的读取现有数组的属性

Angular 无法读取json中未定义的读取现有数组的属性,angular,typescript,Angular,Typescript,为什么我总是收到未定义的错误消息,以及在尝试读取json数据时如何避免这些错误消息 我正在学习Angular,并在使用外部源json的项目中工作。下面是json的一个示例。我需要的主要数据位于包含的数组中: {jsonapi: {…}, data: {…}, included: Array(2), links: {…}} jsonapi: {version: "1.0", meta: {…}} data: {type: "node--quiz", id: "31f020f7-34d9-4b9a-

为什么我总是收到未定义的错误消息,以及在尝试读取json数据时如何避免这些错误消息

我正在学习Angular,并在使用外部源json的项目中工作。下面是json的一个示例。我需要的主要数据位于包含的数组中:

{jsonapi: {…}, data: {…}, included: Array(2), links: {…}}
jsonapi: {version: "1.0", meta: {…}}
data: {type: "node--quiz", id: "31f020f7-34d9-4b9a-bd2b-0d567eb285dc", attributes: {…}, links: {…}}
included: Array(2)
    0: {type: "node--question", id: "afe7137a-2af1-4cb5-92da-879c495c0070", attributes: {…}, links: {…}}
    1:
    type: "node--question"
    id: "79c06ac9-5995-409f-b84c-4d8a9711d0a9"
    attributes: {title: "Question 1", body: {…}, field_options: "{
    ↵   "1":{
    ↵      "type":"select",
    ↵      "option…   ],
    ↵      "answer":"methamphetamines"
    ↵   }
    ↵}", field_processed: "s:390:"<p>The genius chemist {"type":"select","opt…etamines"} in the Breaking Bad tv series.</p>
    ↵";"}
links: {self: {…}}
__proto__: Object
length: 2
__proto__: Array(0)
links: {self: {…}}
__proto__: Object
{jsonapi:{…},数据:{…},包括:数组(2),链接:{…}
jsonapi:{version:“1.0”,meta:{…}
数据:{类型:“节点--测验”,id:“31f020f7-34d9-4b9a-bd2b-0d567eb285dc”,属性:{…},链接:{…}
包括:阵列(2)
0:{类型:“节点--问题”,id:“afe7137a-2af1-4cb5-92da-879c495c0070”,属性:{…},链接:{…}
1:
类型:“节点--问题”
id:“79c06ac9-5995-409f-b84c-4d8a9711d0a9”
属性:{标题:“问题1”,正文:{…},字段\选项:{
↵   "1":{
↵      “类型”:“选择”,
↵      “选项…],
↵      "答复:“甲基苯丙胺”
↵   }
↵},field_处理:“s:390:天才化学家{“type”:“select”,“opt…etamines”}在《破坏的电视连续剧》中

↵";"} 链接:{self:{…}} __原型:对象 长度:2 __原型:数组(0) 链接:{self:{…}} __原型:对象
我的app.component.html如下所示:

<mat-toolbar  color="primary">
  <mat-toolbar-row>
  <span>{{ title }}</span>
  </mat-toolbar-row>
  </mat-toolbar>
  <main>
    <mat-card *ngFor="let question of questions.included">
      <mat-card-header>
        <mat-card-title> {{ question.attributes.title }} </mat-card-title>
      </mat-card-header>
      <mat-card-content>
          {{ question.attributes.body.value }}
      </mat-card-content>
      <mat-card-actions>
        TESTING: body content
      </mat-card-actions>
    </mat-card>
  </main>

{{title}}
{{question.attributes.title}
{{question.attributes.body.value}
测试:身体内容

但我得到
错误类型错误:无法从执行*ngFor的点读取浏览器控制台中未定义的
的属性“included”。

即使数据存在,加载表单时也需要数据。您可以使用简单的安全导航操作符处理此问题,如下所示:

 <mat-card *ngFor="let question of questions?.included">


这是一篇关于有效使用语言的文章。我们的一些对话似乎被mods删除了,这很公平。但我的一条评论没有被删除,因此我将添加一篇补遗,以提供一些有用的背景。你的问题始终包含可能导致读者对r跳过你的帖子。这种情况已经持续多年了。如果你想在这里获得更好的接待,以及帮助编辑维护网站上的技术写作要求,那么请阅读上面的链接。@halfer:你所谓的恳求,我称之为礼貌,我理解。我编辑的目的是表明社区确实如此不同意你的观点,继续这样做恰恰与礼貌相反。关于礼貌和读者如何看待它,特别是为什么读者可能会觉得读了大量的无助感后感到厌烦。这个话题还包括一个哲学困境:语言意味着读者认为它意味着什么,而不是读者认为它意味着什么作家的意思是,如果他们想被理解,就不可避免地要处理这个问题。