将 observable 转换为数组以绘制 googlechart
Transform an observable to array in order to draw googlechart
我使用 angular cli 6 和 angularfire2。我的代码非常适合使用经典的 ngfor 循环和异步管道在模板中显示数据。但我还必须将数据用于 Google 图表。这需要打字稿中的数据。如何将我的可观察对象转换为打字稿中的数组,如下所述?
如果你需要,我可以使用plunker
我的 firedatabase 中有:
--ppss
--pps1key
--treatement : value1
--DateA : DateA1
--Date B : DateB1
--pps2key
--treatement : value2
--DateA : DateA2
--Date B : DateB2
我想在我的 //component.ts 中显示数据,如下所示:
this.data1 = [
['treatement','dateA', 'dateB'],
[ 'Treatement.value1', new DateA1(), new DateB1()],
[ 'Treatement.value2', new DateA2(), new DateB2()]
];
在我的服务中,我发送了一个这样的可观察对象:
getPPSByPatientid(Patientid: string)
{
return this.database.list('/ppss', ref =>
ref.orderByChild("Patientid").equalTo(Patientid)).valueChanges();
}
我试过了,但我有很多错误:
patientid: string;
ppssToDisplay;
data1: any[];
ngOnInit() {
this.route.params.forEach((urlParameters) => {
this.patientid = urlParameters['id'];});
this.ppssToDisplay = this.ppssService.getPPSByPatientid(this.patientid);
let interestingFields = [ 'treatement','dateA', 'dateB'];
this.ppssToDisplay.subscribe(obj => {
this.data1 = [
interestingFields,
interestingFields.map(field => obj[field]),
];
console.log(this.data1);
});
错误:
core.js:1598 ERROR Error: Uncaught (in promise): Error: Not an array Error: Not an array
您将需要使用 .subscribe
从 Observable 中获取数据:
this.ppssToDisplay.subscribe(obj => {
this.data1 = [
interestingFields,
interestingFields.map(field => obj[field]),
];
});
根据 data1
的使用方式,您还可以在模板中使用 Angular 的 async
管道,而不是直接调用 .subscribe
:https://angular.io/api/common/AsyncPipe
我使用 angular cli 6 和 angularfire2。我的代码非常适合使用经典的 ngfor 循环和异步管道在模板中显示数据。但我还必须将数据用于 Google 图表。这需要打字稿中的数据。如何将我的可观察对象转换为打字稿中的数组,如下所述?
如果你需要,我可以使用plunker
我的 firedatabase 中有:
--ppss
--pps1key
--treatement : value1
--DateA : DateA1
--Date B : DateB1
--pps2key
--treatement : value2
--DateA : DateA2
--Date B : DateB2
我想在我的 //component.ts 中显示数据,如下所示:
this.data1 = [
['treatement','dateA', 'dateB'],
[ 'Treatement.value1', new DateA1(), new DateB1()],
[ 'Treatement.value2', new DateA2(), new DateB2()]
];
在我的服务中,我发送了一个这样的可观察对象:
getPPSByPatientid(Patientid: string)
{
return this.database.list('/ppss', ref =>
ref.orderByChild("Patientid").equalTo(Patientid)).valueChanges();
}
我试过了,但我有很多错误:
patientid: string;
ppssToDisplay;
data1: any[];
ngOnInit() {
this.route.params.forEach((urlParameters) => {
this.patientid = urlParameters['id'];});
this.ppssToDisplay = this.ppssService.getPPSByPatientid(this.patientid);
let interestingFields = [ 'treatement','dateA', 'dateB'];
this.ppssToDisplay.subscribe(obj => {
this.data1 = [
interestingFields,
interestingFields.map(field => obj[field]),
];
console.log(this.data1);
});
错误:
core.js:1598 ERROR Error: Uncaught (in promise): Error: Not an array Error: Not an array
您将需要使用 .subscribe
从 Observable 中获取数据:
this.ppssToDisplay.subscribe(obj => {
this.data1 = [
interestingFields,
interestingFields.map(field => obj[field]),
];
});
根据 data1
的使用方式,您还可以在模板中使用 Angular 的 async
管道,而不是直接调用 .subscribe
:https://angular.io/api/common/AsyncPipe