如何在Angular中异步获取对象的一些属性

Posted

技术标签:

【中文标题】如何在Angular中异步获取对象的一些属性【英文标题】:how to get object's some properties async in Angular 【发布时间】:2019-09-03 07:28:33 【问题描述】:

我有一个 Json 对象数组,我通过 Http 调用从服务器获取,假设数组是

var someArray=[
id:1,name:'someName',status:'no-data',
id:1,name:'someName',status:'no-data',
id:1,name:'someName',status:'no-data']

我已经使用 ngFor 将数据渲染成角度表格

  <tr *ngFor="let it of someArray">
  <td>it.id</td>
  <td>it.name</td>
  <td>it.status</td>
  </tr>

我想知道如何获取 someArray 异步的 status 属性(目前我有 no-data 但它的值可以说是 'live' )以便在第一个 API 调用中它应该获取 someArray 渲染它表,然后它获取数组异步的每个对象的状态。

请向我推荐一些文档或帮助将不胜感激:)

【问题讨论】:

如果我没记错的话,您应该在后端执行此操作以获取具有状态和渲染数据的对象。但如果你想用 Angular 实现它,你应该在你的 someArray 上做一个 map 并调用你的后端 @AbderrahimSoubaiElidrissi 我在 BackboneJs 中研究过这种东西,那里有集合和模型,你能分享一些文档吗? 如果你使用 MongoDB 和 mongoose,请考虑使用 populate() 方法 mongoosejs.com/docs/populate.html。如果不尝试进行 JOIN 查询以获取所需孩子的所有数据 【参考方案1】:

我不完全确定你在这里问什么,但是你可以在 for 循环中使用一个异步管道

<tr *ngFor="let it of someArray | async">
  <td>it.id</td>
  <td>it.name</td>
  <td>it.status</td>
</tr>

【讨论】:

我的意思是我想在其他属性已经呈现在 table 之后进行单独的 API 调用以获取 status 属性。它应该显示加载状态,然后在 API 调用后显示实际值。 @Chris,你明白我的意思吗? 对不起,不 - 我不明白你在问什么。您只想在加载数据时显示加载状态? status 在这里有值no-data,我想在运行时嵌套API调用后从后端获取它的值(在db上是status:live)。 @克里斯 如何进行嵌套的 ajax 调用? 您只向我们展示了一个包含 4 个项目的普通数组和一小段带有循环的 HTML。我们不知道您的 ajax 调用的代码是什么样的

以上是关于如何在Angular中异步获取对象的一些属性的主要内容,如果未能解决你的问题,请参考以下文章

Angular:如何将异步属性数据绑定到背景图像

如何从 Angular 中的异步输入中获取“就绪”值

如何在Angular中使用ngFor循环对象属性

如何发送在 Angular Material Autocomplete 中选择的属性的父对象?

如何使用 api 在发明者中获取对象的属性

Angular 2 / Typescript - 如何检查对象数组以查看属性是不是具有相同的值?