typescript 对象值数组未以Angular 显示

dxpyg8gm  于 2023-04-07  发布在  TypeScript
关注(0)|答案(5)|浏览(116)

我有一个对象数组,我将尝试通过插值来显示值。我只得到[Object Object]
Stackblitz

empData = [];
  sampleData = [
    {
      empData: {
        value: '1122334455',
      },
    },
    {
      empData: {
        value: '6677889911',
      },
    },
  ];

  ngOnInit(): void {
    this.empData = this.sampleData?.filter((empVal) => empVal?.empData?.value);
    console.log(this.empData);
  }
55ooxyrt

55ooxyrt1#

使用函数JSON.字符串化
stringify()静态方法将JavaScript值转换为JSON字符串,如果指定了替换函数,则可选地替换值,或者如果指定了替换数组,则可选地仅包括指定的属性。

TS

export class AppComponent implements OnInit {

      convert(data) {
        return JSON.stringify(data);
      }

}

Html

<p *ngFor="let edata of empData">{{ convert(edata) }} </p>
rfbsl7qr

rfbsl7qr2#

在遍历数组时,您没有完全访问值。另外,我建议向empData数组添加适当的数据类型,如下所示:

empData: { empData: { value: string; }}[];
<p *ngFor="let edata of empData">{{ edata?.empData?.value }}</p>
wi3ka0sx

wi3ka0sx3#

你就换这个吧

<p *ngFor="let edata of empData">{{ edata.empData.value }}</p>
eqfvzcg8

eqfvzcg84#

如果查看控制台日志输出,可以很容易地发现您没有正确访问节点:

Array [ {…}, {…} ]
​
  0: Object { empData: {…} }
​​
   empData: Object { value: "1122334455" }

您需要正确引用数组元素:

<p *ngFor="let edata of sampleData">{{ edata.empData.value }}</p>

代码:

this.empData = this.sampleData?.filter((empVal) => empVal?.empData?.value);

归结为sampleDataempData的赋值。

wz3gfoph

wz3gfoph5#

您正在获取[Object Object],因为对象不是angular中html的有效输入。您需要直接提供想要显示的值。在您的情况下,更改代码:

<p *ngFor="let edata of empData">{{ edata }}</p>

收件人:

<p *ngFor="let edata of empData">{{ edata.empData.value }}</p>

将生成您所期望的结果。

相关问题