gpt4 book ai didi

javascript - TS 如何在方法内使用类变量?

转载 作者:行者123 更新时间:2023-12-01 00:13:49 24 4
gpt4 key购买 nike

这已经让我发疯了。我知道这一定是我错过的一些非常愚蠢的东西,但是在仔细阅读了论坛并用谷歌疯狂搜索了半天之后,我放弃了!请帮忙。这是我使用 Angular 开发的第一个应用程序,但我似乎不太擅长。

我有一个从 .net core 3.1 中的服务收到的类 var stats4Graphs。我知道该服务有效,因为当我在组件的 html 部分中使用 stats4Graphs 时,它会正确显示数据。但是,当我在调用服务的函数中检索数据时,我无法使用该变量,即使是像这样的小事情也无法使用: console.log('Labels in: ' + this.stats4Graphs.label);,当控制台向我显示“标签:未定义”时,我不知道还能做什么。

这是我的 stats4Graphs 模型

    export class Stats4Graphs {
axisLabels: string[] = [];
label: string;
points: number[] = [];
}

我不知道是否需要在这里初始化数组,这只是我为实现这项工作所做的绝望尝试之一。

这是我的组件.ts

import { Component, OnInit } from '@angular/core';
import { Stats4Graphs } from 'src/app/shared/models/stats4-graphs.model';
import { ProfileService } from '../profile.service';

@Component({
selector: 'app-engagement-chart',
templateUrl: './engagement-chart.component.html',
styleUrls: ['./engagement-chart.component.css']
})
export class EngagementChartComponent implements OnInit {

public stats4Graphs: Stats4Graphs = new Stats4Graphs();

// ADD CHART OPTIONS.
chartOptions = {
responsive: true // THIS WILL MAKE THE CHART RESPONSIVE (VISIBLE IN ANY DEVICE).
}

labels = [];

// STATIC DATA FOR THE CHART IN JSON FORMAT.
chartData = [
{
label: '',
data: []
}
];

// CHART COLOR.
colors = [
{ // 1st Year.
backgroundColor: 'rgba(77,83,96,0)',
borderColor: 'rgba(77,83,96,0.2)',
borderWidth : 2
}
]

// CHART CLICK EVENT.
onChartClick(event) {
console.log(event);
}
constructor(private profileService: ProfileService) { }

ngOnInit() {
this.profileService.getEngagement('UC__8h96Jwsaptaqh227Q9gg')
.subscribe(stats4Graphs => {
this.stats4Graphs = stats4Graphs;
});
//this.chartData = this.stats.points as any [];
//this.chartData = this.stats.label as any;
console.log('Labels in engagement: ' + this.stats4Graphs.label);
this.labels = this.stats4Graphs.axisLabels as any;
}

}

正如你所看到的,我正在尝试做的是一个折线图(使用 Chart.js 和 ng2-charts),它将显示 stats4Graphs 中包含的数据,我也没有关于如何将 stats4Graphs.pointsstats4Graphs.label 中的数据放入 chartData 的一点想法如果你能帮助我,那就太好了也是如此。

但是现在,我如何知道该服务确实有效?因为我可以在 component.html 中使用它,并且它显示来自服务的值。

<p>{{ stats4Graphs.label }}
<br />
{{ stats4Graphs.axisLabels }}
<br />
{{ stats4Graphs.points }}
</p>

预先感谢您的所有帮助

最佳答案

console.log('Labels in: ' + this.stats4Graphs.label);未定义,因为调用 this.profileService.getEngagement(' UC__8h96Jwsaptaqh227Q9gg') 是异步的,因此尚未完成。

正确的方法是将语句放在subscribe

this.profileService.getEngagement('UC__8h96Jwsaptaqh227Q9gg')
.subscribe(stats4Graphs => {
this.stats4Graphs = stats4Graphs;

console.log('Labels in engagement: ' + this.stats4Graphs.label);
this.labels = this.stats4Graphs.axisLabels as any;
});

希望对你有帮助

关于javascript - TS 如何在方法内使用类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59904933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com