Ich habe ng2-charts
arbeiten auf meinem Angular-CLI gebaut Anwendung. Ich bin ziemlich neu, also wird jede Hilfe geschätzt. Ich habe Daten auf Firebase eingerichtet. Ich erstelle ein Verfahren in einem Dienst auf die Daten zugreifen und wenn ich diesen Code verwendenWie gebe ich ein Array anstelle einer FirebaseListObservable zurück
getGraphData():Observable<any>{
var graphData$ = this.af.database.list(`graphdata/${this.uid}`)
.map(tspa => tspa.map(tpa => tpa.$value))
.do(console.log);
graphData$.subscribe();
return Observable.of([]);
}
die Konsole protokolliert die richtigen Daten.
ex. [1000, 5000, 2000]
das Problem ist, wenn ich die Methode ändern das Ergebnis zurück wie so:
getGraphData():Observable<any>{
return this.af.database.list(`graphdata/${this.uid}`)
.map(tspa => tspa.map(tpa => tpa.$value))
}
und versuchen Sie es in einer Komponente zu einer Variablen zuzuweisen. Ich bekomme immer das Konsolenprotokoll aus:
>FirebaseListObservable
Ich habe verschiedene Methoden gesehen für mein gewünschtes Ergebnis zu erzielen wie mit flatMap
und Observable.combineLatest()
aber ich kann kein anderes Ergebnis. Ich habe JSON-Daten, die ich einer Variablen als Array zuweisen möchte, um sie in meinem Balkendiagramm anzuzeigen.
graph.ts
data$: any;
form$: any;
public barChartLabels:string[] = ['Account1', 'Account2', 'Account3', 'Account4', 'Account5', 'Account6', 'Account7'];
public barChartType:string = 'bar';
public barChartLegend:boolean = true;
firstVar:any = [28, 48, 40, 19, 86, 27, 90];
secondVar:any = [28, 48, 40, 19, 86, 27, 90];
public barChartData:any[] = [
{data: this.firstVar, label: 'Series A'},
{data: this.secondVar, label: 'Series B'}
];
ich möchte firstVar
die neuen Firebase Daten zuzuordnen. Irgendwelche Vorschläge?
i Zugriff in der Regel das Verfahren wie folgt aus:
ngOnInit() {
this.firstVar = this.transactionsS.getGraphData();
console.log(this.firstVar)
}
updateGraph(){
this.firstVar = this.transactionsS.getGraphData()
console.log(this.firstVar)
}
Sie überprüfen danken. Ich muss noch lernen, ich werde die Dokumente lesen. Mir ist aufgefallen, dass ich mit deiner Lösung nicht das gewünschte Ergebnis erziele, aber zumindest bin ich viel näher dran. Ich musste '.flatMap (list => list)' am Ende der 'getGraphData()' Methode hinzufügen, um ein Array mit den gewünschten Daten zu erhalten. Ein Problem, das möglicherweise nicht zusammenhängt. Vervielfältigt 'flatMap' typischerweise die Daten? Anstelle eines Arrays von '[1000, 1000, 5000]' bekomme ich '[1000, 1000, 5000, 1000, 1000, 5000]'. ngOnit schiebt das val nur einmal auf firstVar richtig? – DauvO
tatsächlich sehe ich, was passiert, aber nicht sicher, wie es zu beheben ist.Wenn Sie eine Observable abonnieren, habe ich festgestellt, dass ein Konsolenprotokoll mit einem leeren Array beginnt und es dann mit einer neuen Instanz füllt und wiederholt, bis es beendet ist. Also aus den 3 Artikeln. es war [] dann [1000] dann [1000, 5000] dann [1000, 5000, 1000] also füllt mein endendes Array alle sechs ganzen Zahlen in ein Array wegen des Push-Befehls, von dem ich glaube, dass er [1000, 1000, 5000, 1000, 5000, 1000]. Gibt es eine andere Option als Push? Ich stelle mir vor, sowas würde funktionieren. – DauvO