我正在嘗試獲取保存到 firebase 的資訊并動態使用它來填充 ng2-chart 的陣列。
我目前遇到的問題是 observable 不允許我填充這個陣列。
getEntries(id) {
this.entries2 = this.dataService.getEntries(id);
let datesarr: string[] = [];
let arr = [];
this.dataService.getEntries(id).subscribe((entry) => {
entry.forEach(function (x) {
arr.push(x);
});
for (let i = 0; i < arr.length; i) {
// console.log(arr[i].Q1);
let x: string = arr[i].Q1;
// console.log(x);
datesarr.push(x);
//this.barChartLabels.push(x);
//Whenever I try to push this value it encounters an error.
}
});
}
我是否誤用了這個 observable 的 subscribe 函式?如果是這樣,我該如何解決?
以前我嘗試使用以下代碼段:
getEntries(id) {
this.entries2 = this.dataService.getEntries(id);
let arr = [];
let datesarr: string[] = [];
this.entries2.forEach(function (entry) {
entry.forEach(function (x) {
arr.push(x);
});
for (let i = 0; i < arr.length; i) {
let x: string = arr[i].Q1;
datesarr.push(x);
//this.barChartLabels.push(x);
}
});
我認為問題在于這個 observable 是異步的,并且 barchartlabels 行推送“未定義”而不是任何真實資料。
條目 2 定義為:
entries2: Observable<any>;
barchartlabels 只是一個空陣列,我試圖將資料推送到:
public barChartLabels: Label[] = [];
從dataService中的db獲取資訊的代碼是:
getEntries(id){
return this.db.collection(`users/${id}/entries`).valueChanges();
}
有人可以指出我如何解決這個問題的正確方向嗎?
Note: I've tried looking into Subjects, but am not sure if they fit into my code as returning the last value of a stream doesn't seem to be all too useful.
uj5u.com熱心網友回復:
這似乎是一個型別問題。this.barChartLabels 需要一個你所指的標簽陣列
this.barChartLabels: Label[] = [];
因此,您只需嘗試將 x 資料轉換為 Label:
getEntries(id) {
this.entries2 = this.dataService.getEntries(id);
let datesarr: string[] = [];
let arr = [];
this.dataService.getEntries(id).subscribe((entry) => {
entry.forEach(function (x) {
arr.push(x);
});
for (let i = 0; i < arr.length; i) {
// console.log(arr[i].Q1);
let x: string = arr[i].Q1;
// console.log(x);
datesarr.push(x);
this.barChartLabels.push(x as Label); // note as Label
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/339812.html
標籤:angular observable behaviorsubject ng2-charts
上一篇:繼承和多模型介面
