У меня есть ng2-charts
, работающий над моим встроенным приложением Angular-cli. Я довольно новый, поэтому любая помощь ценится. У меня есть настройка данных на Firebase. Я создаю метод в службе доступ к этим данным и, когда я использую этот кодКак вернуть массив вместо FirebaseListObservable
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([]);
}
консоль записывает правильные данные.
ex. [1000, 5000, 2000]
проблема, когда я изменить метод возвращает результат примерно так:
getGraphData():Observable<any>{
return this.af.database.list(`graphdata/${this.uid}`)
.map(tspa => tspa.map(tpa => tpa.$value))
}
и попытаться присвоить его переменной в компоненте. Я всегда получаю журнал консольной:
>FirebaseListObservable
Я видел различные методы получения моего желаемого результата, такие как использование flatMap
и Observable.combineLatest()
, но я не могу получить любой другой результат. У меня есть данные json, которые я хочу присвоить переменной как массив, чтобы отобразить ее в моей гистограмме.
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'}
];
я хотел бы назначить firstVar
новые Firebase данные. Какие-либо предложения?
я обычно доступ к этому методу, как это:
ngOnInit() {
this.firstVar = this.transactionsS.getGraphData();
console.log(this.firstVar)
}
updateGraph(){
this.firstVar = this.transactionsS.getGraphData()
console.log(this.firstVar)
}
Спасибо. Мне нужно еще научиться читать документы. Я заметил, что с вашим решением я не получаю желаемого результата, но, по крайней мере, я намного ближе. Мне пришлось добавить '.flatMap (list => list)' в конец метода getGraphData() ', чтобы получить массив с нужными мне данными. Одна проблема, которая может быть несвязанной, ли «flatMap» обычно дублирует данные? Вместо массива '[1000, 1000, 5000]' я получаю '[1000, 1000, 5000, 1000, 1000, 5000]'. ngOnit только толкает значение val в первый раз вправо? – DauvO
На самом деле я вижу, что происходит, но не знаю, как это исправить.Когда вы подписываетесь на наблюдаемый, я заметил, что консольный журнал начнется с пустого массива, а затем заполнит его новым экземпляром и повторит до завершения. Таким образом, из 3 предметов. это было [], затем [1000], затем [1000, 5000], затем [1000, 5000, 1000], поэтому мой конечный массив заполняет все шесть целых чисел в один массив из-за команды push, которая, как мне кажется, приводит к [1000, 1000, 5000, 1000, 5000, 1000]. Есть ли другой вариант использования, чем push? Я думаю, что что-то вроде набора будет работать. – DauvO