首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >角度数组显示所有视图中的最新数据

角度数组显示所有视图中的最新数据
EN

Stack Overflow用户
提问于 2018-01-22 14:47:10
回答 1查看 50关注 0票数 0

我在如何在我的卡片上显示每个主题的数据方面遇到了问题。

HTML

代码语言:javascript
代码运行次数:0
运行
复制
<ion-item *ngFor="let topic of topicCluster" (click)="viewTopic(topic.slug)">
  <strong>{{topic?.number}}.&nbsp;{{topic?.name}}</strong>
</ion-item>

TS

代码语言:javascript
代码运行次数:0
运行
复制
  this.topicProvider.getClusters().subscribe(cluster => {
    this.clusters = cluster
    console.log(this.clusters)
    cluster.forEach(element => {
      const topicArr = []
      for (var key in element.topics){
        this.topicProvider.getTopic(key).subscribe(topic => {
        topicArr.push(topic)   
        })
      }
      this.topicCluster = topicArr       
      console.log(this.topicCluster)
    })
  })

问题:

代码语言:javascript
代码运行次数:0
运行
复制
 1st Card: 
       14th Topic
       15th Topic
    ..
    5th Card: 
       14th Topic
       15th Topic

应该是:

代码语言:javascript
代码运行次数:0
运行
复制
1st Card: 
   14th Topic
   15th Topic
..
5th Card: 
   14th Topic
   15th Topic

这是我拥有的数据

EN

回答 1

Stack Overflow用户

发布于 2018-01-22 15:42:29

需要更新您的for循环,因为有一个异步订阅调用,它将丢失上下文。for循环将循环,并将键的最后一个值传递给异步。您可以使用IIFE来避免这种情况。

代码语言:javascript
代码运行次数:0
运行
复制
    let self = this;
    self.topicProvider.getClusters().subscribe(cluster => {
    self.clusters = cluster
    console.log(self.clusters);
    cluster.forEach(element => {
      const topicArr = []
      for (var key in element.topics){
        (function(keyData){
        self.topicProvider.getTopic(keyData).subscribe(topic => {
        topicArr.push(topic);
        })
        })(key);
      }
      self.topicCluster = topicArr       
      console.log(self.topicCluster)
    })
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48375978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档