Ich arbeite derzeit an einer Visualisierungsanwendung mit Angular2
und TypeScript
für das frontend
und Spring-Boot für die backend
. Jetzt bin ich an dem Punkt, wo die Daten aus dem backend
in meinen ng2-Chart-Komponenten angezeigt werden müssen.Angular2, NG2-Diagramm Kind Rendering vor Eltern
Ich lade die Daten in meine Elternkomponenten ngOnInit() -Funktion. Die Daten werden in zwei Reihen geschoben, die wie so für mein Kind Komponente als Eingang arbeiten:
ngOnInit() {
this._sqlService.getCubeErrors().subscribe(
data => {
for (var i = 0; i < data.length; i++) {
this.barLabels.push(data[i]["monthCube"]);
this.barData[0]["data"].push(data[i]["errors"]);
}
},
err => { this.error = true }
)
}
und hier meinen Dienst:
getCubeErrors() {
return this.http.get('/rest/cubeerrors').map((res: Response) => res.json());
}
Die beiden Arrays barLabels
und barData
auf das untergeordnete Komponente übergeben werden wie folgt aus:
<bar-chart [barLabels]="barLabels" [barData]="barData" ></bar-chart>
In meinem Kind Komponente ihnen i ein Diagramm erstellen bin mit:
@Input() barData: any[];
@Input() barLabels: Array<string>;
public barChartData: any[] = this.barData;
public barChartLabels: string[] = this.barLabels;
Ich habe versucht, die Daten mit einigen console.log() Haltepunkten zu verfolgen, und es scheint, dass sie identisch sind.
Das Problem, mit dem ich konfrontiert bin, ist, dass irgendwie das Diagramm der Kindkomponente gerendert wird, bevor die ngOnInit()
stattfindet und so meine Daten nicht angezeigt werden. Ich suchte nach einer Update-Funktion, war aber nicht erfolgreich.
Ich hoffe, jemand könnte eine Antwort auf diese haben,
Sebastian
ngOnChange würde, wenn impl einer CONP Änderungen genannt werden, aber für die Referenz des Array funktionieren muss geändert werden. Es wird kein Schiebeelement in einem Array erkannt. –
Ich habe ngOnChanges() in meiner Diagrammkomponente zu Testzwecken getestet und es wurde ausgelöst, sodass ich denke, dass es die Änderungen erkannt hat. – CodeDonkey