Преобразуйте наблюдаемое в массив, чтобы нарисовать гуглчарт - PullRequest
0 голосов
/ 29 июня 2018

Я использую Angle Cli 6 и Angularfire2. Мой код очень хорошо работает для отображения данных в шаблоне с помощью классического цикла ngfor и асинхронного канала. Но я также должен использовать данные для графика Google. Для этого нужны данные из машинописи. Как я могу преобразовать мои наблюдаемые в массив в машинописи, как описано ниже?

Я могу использовать вантуз, если он вам нужен

У меня есть в моей базе данных:

--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

1 Ответ

0 голосов
/ 29 июня 2018

Вам нужно будет использовать .subscribe, чтобы получить данные из наблюдаемой:

this.ppssToDisplay.subscribe(obj => {
  this.data1 = [
    interestingFields,
    interestingFields.map(field => obj[field]),
  ];
});

В зависимости от того, как используется data1, вы также можете использовать async канал Angular в шаблоне вместо прямого вызова .subscribe: https://angular.io/api/common/AsyncPipe

...