首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用ngOnChanges加载数据

如何用ngOnChanges加载数据
EN

Stack Overflow用户
提问于 2019-08-17 09:40:03
回答 1查看 821关注 0票数 0

我有一个这里的演示

这是一个角度应用程序,在这里我试图创建一个D3图表。

图表数据使用createDate函数创建,创建随机数据和日期。

我希望用更新按钮更新图表,所以我使用的是ngOnChanges,但这不会在页面加载时创建图表。

ngOnInit注释掉页面加载时加载图表。

代码语言:javascript
复制
ngOnChanges(changes: SimpleChanges) {
    if(!changes.data) return;

    if(this.hasPreviousData){

      this.createData()

      this.stack = d3.stack()
          .keys(['data_1', 'data_2', 'data_3', 'data_4'])

      this.createStack(this.testData);
    }else{

      this.createData()

      this.stack = d3.stack()
        .keys(['data_1', 'data_2', 'data_3', 'data_4'])

      this.initScales();
      this.initSvg();
      this.drawAxis();
      this.createStack(this.testData);

      this.hasPreviousData = true;
    }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-17 10:55:11

ngOnChanges之所以不能工作,是因为它可以处理@Input参数的更改。在您的示例中,只是简单地从组件本身更改组件的值。

看一下这个演示。我在您的演示代码中做了一些代码更改,它似乎在做您所期望的相同的事情。

您可以将图形创建逻辑放在createData()本身中,然后处理rest:

代码语言:javascript
复制
  createData() {
    this.testData = [];
    this.years = Math.floor(Math.random() * this.dates.length)
    console.log(this.years)
    for(let i:number= 0; i<=this.years; i++){
      this.testData[i] = {
        data_1: Math.floor(Math.random() * (this.max - this.min)),
        data_2: Math.floor(Math.random() * (this.max - this.min)),
        data_3: Math.floor(Math.random() * (this.max - this.min)),
        data_4: Math.floor(Math.random() * (this.max - this.min)),
        date: this.dates[i]
      }
    }    
    this.stack = d3.stack()
      .keys(['data_1', 'data_2', 'data_3', 'data_4']);
    if(this.hasPreviousData){
      this.createStack(this.testData);
    }else{
      this.hasPreviousData = true;
      this.initScales();
      this.initSvg();
      this.drawAxis();
      this.createStack(this.testData);
    }
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57535104

复制
相关文章

相似问题

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