teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足

2021/07/28 10:15

投稿

emoyome
emoyome

スコア11

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  `ng2-charts`を利用したことはありませんが`dataSet`の参照が更新されたタイミングで`lineChartData`や`lineChartLabels`の参照は更新されていないからではないでしょうか。
2
2
 
3
- ```
3
+ ```ts
4
4
  ngOnChanges(changes: SimpleChanges): void {
5
5
  if (changes['dataSet'].currentValue) {
6
6
  let val = changes['dataSet'].currentValue;
@@ -18,4 +18,25 @@
18
18
  },
19
19
  ];
20
20
  }
21
+ ```
22
+
23
+ または変更検知処理を直接呼び出しても良いかもしれません。
24
+
25
+ ```ts
26
+
27
+ // 追加
28
+ constructor(private cd: ChangeDetectorRef) {}
29
+
30
+ ngOnChanges(changes: SimpleChanges): void {
31
+ if (changes['dataSet'].currentValue) {
32
+ let val = changes['dataSet'].currentValue;
33
+ // データ更新 ここの処理が重たいからか?
34
+ for (let i = 0; i < val.hourly.length; i++) {
35
+ this.indexs[i] = (new Date(val.hourly[i].dt * 1000).getHours().toString());
36
+ this.datas[i] = +(val.hourly[i].temp - 273.15).toFixed(2);
37
+ }
38
+ }
39
+ // 変更検知を行うために追加
40
+ this.cd.detectChanges()
41
+ }
21
42
  ```