Преобразуйте наблюдаемую в массив, чтобы нарисовать googlechart

Я использую angular 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

person Newbiiiie    schedule 29.06.2018    source источник
comment
Показать сообщения или ошибки, которые вы получаете.   -  person    schedule 29.06.2018
comment
@jdv core.js: 1598 ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: не массив Ошибка: не массив   -  person Newbiiiie    schedule 03.07.2018
comment
@jdv вторая часть массива не определена...   -  person Newbiiiie    schedule 03.07.2018
comment
Всегда редактируйте вопрос, чтобы обновить его запрошенной информацией. Я сделал это для вас на этот раз.   -  person    schedule 03.07.2018
comment
хорошо, спасибо, я сделаю это в следующий раз   -  person Newbiiiie    schedule 03.07.2018


Ответы (1)


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

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

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

person Explosion Pills    schedule 29.06.2018
comment
Мне просто нужно определить data1 в машинописном тексте, а googlechart сделал все остальное. Но у меня есть эта ошибка: SUBSCRIB не существует для типа any[] - person Newbiiiie; 29.06.2018
comment
Mange это неправильный способ определить data1? спасибо доктор - person Newbiiiie; 29.06.2018
comment
Что возвращает valueChanges? Я думал, что это Observable - person Explosion Pills; 29.06.2018
comment
Хорошо, я иду, чтобы увидеть это, и я возвращаюсь - person Newbiiiie; 29.06.2018
comment
@ Explosion Pils Когда я использую ваше решение, у меня возникает эта ошибка: Ошибка RROR: Uncaught (в обещании): Ошибка: не массив Ошибка: не массив - person Newbiiiie; 03.07.2018
comment
Я думаю, что проблема вinterestFields.map(field => obj[field]), потому что он отправляет мне неопределенный массив - person Newbiiiie; 03.07.2018