微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过扩展运算符破坏模板渲染将属性添加到 Angular 应用程序中的数组

如何解决通过扩展运算符破坏模板渲染将属性添加到 Angular 应用程序中的数组

我有一些来自我可以呈现的来源的 covid-19 数据。 我不控制端点,所以我接受它。如果我听到的科学是正确的 每两个确诊可能有一个未确诊,所以我想显示在确诊病例旁边添加一个疑似病例列

所以我通过添加一个新的计算属性来有效地按摩传入的数据 确认数的1.3倍,cv19_actisus是新的属性

this.newShape = this.covidCases.map(res => ({...res.attributes,cv19_actisus: res.attributes.cv19_acti * 1.3  }) )
    this.filteredmCovid = this.newShape;

我创建了一个 Stackblitz here,这按预期工作,除非我添加计算属性时不再呈现任何内容。在控制台下钻可以看到新添加属性

只需注释掉上面的三行,即可在添加属性之前查看模板渲染良好,但是当调用带有扩展运算符的代码时,没有任何渲染,但我可以看到每个都存在新的计算属性返回的 88 个对象/行。

我认为可能是时间问题,在数据可用之前渲染所以我尝试了 一种反应式方法,即仅 observables 并在模板中使用异步管道,我尝试让数据服务返回一个与端点具有相同形状的硬编码对象。

有人能给我建议或给我看一个类似的例子吗?提前致谢!

解决方法

以下将使用扩展运算符解决您的问题:

this.newShape = this.covidCases.map(res => ({attributes: {...res.attributes,cv19_actisus: `${Math.round(res.attributes.cv19_acti * 1.3)}` }})  )
});

原因。

this.newShape = this.covidCases.map(res => ({...res.attributes,cv19_actisus: res.attributes.cv19_acti * 1.3  }
))

解析为 Attributes 类型的对象,您可以通过打印 this.newShape 的第一个实例来测试这一点。

当您打印当前代码的第一行时,您会得到:

{FID: 24,codmun: 35016,municipio: "Las Palmas de Gran Canaria" ... }

然而,您想要的是 Feature 类型的对象,它具有键 attributes 并且属于 Attributes。这是因为 filteredmCovid 的类型为 Feature

,

如果我理解得很好,您想为每个 attributes 更改或添加一个 res 并且您想克隆每个 res 以避免改变数据?

对我来说,问题来自您的 map 返回的数据。 您的输入是:Array<{attributes: {codenum,.....;}>,您的输出是 Array<{codenume,.....}>

我建议您使用此代码:

    this.newShape = this.covidCases.map(res => {
      const attributes = {
        ...res.attributes,cv19_actisus: `${Math.round(res.attributes.cv19_acti * 1.3)}`
      };
      return { ...res,attributes };
    });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?