【问题标题】:Retrieve value returned from a function in Angular检索从 Angular 中的函数返回的值
【发布时间】:2021-07-21 15:52:34
【问题描述】:

我想在 Angular 中使用 chart.js 和 ng2chart 创建一个图表。我创建了一个函数来计算我想传递给图表的值,但我不能这样做,如下面的代码所示,因为我会在初始化之前使用属性“在线”。还有什么方法可以将onlineNumber() 函数返回的值传递给我的doughnutChartData?这是函数:

online: number;
term: number;
doughnutChartData = [this.online, this.term];

onlineNumber() : number {
    this.memberService.onlineUsers().subscribe((number: number) => {
      this.online = number;
    })
    return this.online;
  }

userNumber() {
     this.memberService.userNumber().subscribe((number: number) => {
      this.term = number;
    })
  }

html:

 <div style=" margin-top: -6%; margin-left:15%; width: 50%;">
                                <canvas baseChart 
                                [data]="doughnutChartData"
                                [labels]="doughnutChartLabels"
                                [chartType]="doughnutChartType"
                                ></canvas>
 </div>

【问题讨论】:

    标签: angular chart.js ng2-charts


    【解决方案1】:

    您有完整的工作示例吗?

    我的猜测是在订阅中初始化 donutChartData:

    online: number;
    doughnutChartData;
    
    onlineNumber() : number {
      this.memberService.onlineUsers().subscribe((number: number) => {
        this.online = number;
        doughnutChartData = [this.online, 9];
      });
      return this.online;
    }
    

    更新的答案:添加另一种方法来初始化 DoughnutChartData 并在 userNumber 和 onlineNumber 中使用它:

    initializeDoughnutChartData() {
        if (this.online != undefined && this.term != undefined) {
            this.doughnutChartData = [this.online, this.term];
        }
    }
    

    在 userNumber 和 onlineNumber 中调用此方法:

    onlineNumber() : number {
        this.memberService.onlineUsers().subscribe((number: number) => {
          this.online = number;
          this.initializeDoughnutChartData();
        })
        return this.online;
    }
    
    userNumber() {
        this.memberService.userNumber().subscribe((number: number) => {
          this.term = number;
          this.initializeDoughnutChartData();
        })
    }
    

    【讨论】:

    • 我已经编辑了我的问题。如果第二个值是硬编码的,你的答案就有效,但我打算从两个不同的函数发送两个值。对不起,我的错。
    • 谢谢!这工作得很好,数组填充了正确的值,但现在我在控制台中遇到错误并且我的图表没有显示:data or datasets field are required to render chart doughnut。这是为什么呢?
    • 组件加载时,donutChartData 未定义。这可能是错误的原因。也许将 *ngIf="doughnutChartData" 添加到您的 div(或画布)会有所帮助:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2023-03-19
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多