Angular 订阅将对象推送到数组

2024-03-29

我正在制作角度应用程序,并且我有一个空数组,例如,

  users: any = [];

然后我拨打服务电话ngOnInit将数据存储到users像数组一样,

  ngOnInit() {

    //Getting the data from json
    this.httpClient.get('https://api.myjson.com/bins/n5p2m').subscribe((response: any) => {
      console.log("response", response.data);
      response.data.forEach(element => {
        //Pusing the data to users array
        this.users.push(element);
      });
    })

    //Trying to get the complete array after push of the element from the service response data
    console.log("users array", this.users);
    //But it shows empty array
  }

但我无法获取数据console.log("users array", this.users);因为服务呼叫会造成延迟..

如何将数据推入this.users当我们在服务外部调用时,它应该具有填充的数据,而不是像现在一样为空。

还做了一个工作堆栈闪电战关于它https://stackblitz.com/edit/angular-q3yphw https://stackblitz.com/edit/angular-q3yphw

请查看具有当前结果的控制台。

目前结果 in console.log("users array", this.users);是空数组[].

So i am 期待下列result in console.log("users array", this.users);服务外和服务内ngOnInit,

[
{"id":1,"value":"User One"},
{"id":2,"value":"User Two"},
{"id":3,"value":"User Three"}
]

由于我是角度新手,请帮助我实现预期结果。


已经分叉了你Stackblitz 演示 https://stackblitz.com/edit/ngx-http-response-rxjs

如果您想在 HTTP 客户端响应后操作数据,实际上可以通过使用 RxJS 运算符来实现。在管道内的这些方法之后,当您订阅其最终值时,它将直接渲染到您的模板。

this.httpClient
  .get('https://api.myjson.com/bins/n5p2m')
  .pipe(
    map(response => response.data),
    tap(users => console.log("users array", users))    // users array [Object, Object, Object]
  )
  .subscribe(users => this.users = users);

如果您不想使用 RxJS 运算符,您仍然可以在订阅其最终值并执行手动数据操作后对其进行操作

无需执行 .forEach() 来存储 response.data 中的对象数组,因为 Angular 已经为您执行了该操作。所以每当你将它分配为

this.users = response.data它将存储您的对象数组[Object, Object, Object]

this.httpClient
  .get('https://api.myjson.com/bins/n5p2m')
  .subscribe(response => this.users = response.data);  // This will directly store your response data in an array of objects.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 订阅将对象推送到数组 的相关文章

随机推荐

  • 无法从 root(或 sudo)使用 NVM

    我注意到我的应用程序在运行时使用不同版本的 NodeJSsudo node v v0 10 23 sudo node v v0 11 8 pre This v0 11 8 pre给我带来了一些问题 所以我绝对不想使用它 但我无法将其更改为r
  • ANTLR 生成无效的 java 异常并抛出代码

    这些天我一直在使用 ANTLRwork 1 5 和 Antlr Runtime 3 5 这是我发现的一个奇怪的事情 Antlr 正在为我生成这种 java 代码 public final BLABLABLAParser addExpress
  • 如何正确关闭MappedByteBuffer?

    这是我正在运行的代码 import java io RandomAccessFile import java nio MappedByteBuffer import java nio channels FileChannel public
  • S/mime 时间戳支持

    好的 现在我已经有了来自 TS 提供商的时间戳 我该如何将其放入哑剧消息中才能符合标准 据我所知 没有邮件程序支持时间戳 这不会成为问题 因为我将自己处理 mime 消息 不过我想让它成为标准方式 有什么例子吗 Thanks 我认为 Mic
  • 名称中的前导箭头在 clojure 中意味着什么

    在学习 Clojure 时 我遇到了如下代码 gt defrecord Person name age user Person gt gt Person john 40 user Person name john age 40 gt Per
  • 部分模板专业化歧义

    我不明白为什么 main 中的语句不明确 template
  • 如何在hibernate注释类中使两列作为主键

    这是我的注释类 我想要userId and groupId列都作为主键 我发现了更多问题 Question https stackoverflow com q 10422680 3156758 关于这个 但没有找到相关答案 我的声誉较差 所
  • 在构建路径中出现 JRE 系统库未绑定错误

    在构建路径中出现 JRE 系统库未绑定错误 尝试了以下链接中的所有建议 但不起作用 我有jdk 1 6 0 29 我也尝试安装其他版本但没有帮助 JRE 系统库 WebSphere v6 1 JRE 未绑定 https stackoverf
  • Rails 中的 example.com/controller 和 example.com/controller/ 有什么区别?

    我有一个 PostsController 对于示例来说不是必需的 但在粘贴片段时会有所帮助 并且我正在使用current page 顾名思义 找出正在显示的页面 我得到了看起来很奇怪的结果 current page 如果我去的话会返回不同的
  • 如何在 Python 2.7 中实现 GMRES 的 ILU 预处理器?

    我正在尝试比较带 ILU 预处理器和不带 ILU 预处理器的 GMRES 求解器 当未应用预处理器时 它会运行并提供正确的答案 x 1 1 1 但是 我似乎无法找到正确应用预处理器的方法 如何让这段代码与 ILU 预处理器一起运行 impo
  • 具有大量动态子域的站点的站点地图

    我正在运行一个允许用户创建子域的网站 我想通过站点地图将这些用户子域提交给搜索引擎 但是 根据站点地图协议 和 Google 网站管理员工具 单个站点地图只能包含来自单个主机的 URL 最好的方法是什么 目前我有以下结构 站点地图索引位于
  • 递归展开树

    我正在尝试实现一个自下而上的递归展开树 我递归到需要展开的节点 并找到该节点的父节点和祖父节点 然后我就可以根据情况选择之字形或之字形 问题是完成此操作后 我将已展开一次的节点返回到先前的递归调用 先前的递归调用引用了该节点的父节点 该节点
  • ListView 行样式 - 左对齐文本和右对齐图标

    我试图让 ListView 行如下所示 Text Text Text
  • MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

    从我的 MongoDB 中我想要相当于 SELECT column1 column2 FROM tbl 通过这段代码 我得到了所有的 行 也得到了所有的 列 DBCollection collection database getColle
  • Winforms C# Outlook 风格日历

    我的任务是在 winforms C 应用程序中重新创建 MS Access 日历 我为用户创造的东西 他们讨厌 基本上 我正在将数据转储到 DataGridView 中 他们可以按月 日或员工进行搜索以获取日历事件 他们要求重新设计 使其看
  • Alamofire 具有用于快速应用程序的自定义参数编码

    我必须在我的 swift 应用程序中从 SOAP Web 服务调用一些方法 所以我认为我应该使用自定义参数编码 但是当我为此编码创建闭包时 它似乎永远不会被调用 难道我做错了什么 这是我的代码 let custom URLRequestCo
  • Spring 4,JPA,关闭控制台调试消息

    我有一个基本的 Spring 4 JPA 应用程序 我使用所有 Java 配置 根本没有 XML 我想关闭控制台调试消息 我看到了很多关于此的问题并尝试了解决方案 但我仍然看到了所有消息 控制台消息如下所示 14 58 29 301 mai
  • 从函数返回数据 (Swift)

    我正在尝试返回结果并能够从此函数访问结果数组 函数中的一切都正常工作 但是我无法返回任何内容或访问结果或从闭包外部在函数内部创建的任何变量 我想从闭包外部访问 result valueForKey id 我怎样才能做到这一点 class V
  • 错误(Xcode):意外的重复任务:目标“Runner”已将命令从“path/GoogleService-Info.plist”复制到“path/GoogleService-Info.plist”

    我尝试在正确使用 firebase 进行设置后在 iOS 上运行 flutter 项目 但收到以下与 GoogleService Info plist 相关的重复错误 这是完整的错误输出 Error output from Xcode bu
  • Angular 订阅将对象推送到数组

    我正在制作角度应用程序 并且我有一个空数组 例如 users any 然后我拨打服务电话ngOnInit将数据存储到users像数组一样 ngOnInit Getting the data from json this httpClient