将 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 管道,而不是直接调用 .subscribehttps://angular.io/api/common/AsyncPipe