Angular 6, RxJS возвращает неопределенный объект - PullRequest
0 голосов
/ 12 июня 2018

моя функция map / filter не возвращает объект, который я получаю от службы в памяти.

this.myService.getEventMedia().subscribe(
  (response) => {
    return response.map((res) => {
      this.returnObj = res.dataObj.filter((data) => {
       if(data.id === id) {
         console.log('event is ', data)
         return data;
       }

      })
    })
  }
);

после этого ответа и / или ngAfterViewInit () returnObj - запись журнала консоли не определена.Мои данные из функции фильтра имеют значение, и я могу утешить журнал data.id

моя модель выглядит следующим образом

export interface Model {
  id: number;
  name: string;
  data: Data[];
}

Ответы [ 2 ]

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

Может быть, изменить подписку на эту услугу?

this.myService.getEventMedia().subscribe(
  (response) => {
    this.returnObject = response.map((res) => {
      return res.dataObj.filter((data) => {
       if(data.id === id) {
         console.log('event is ', data)
         return data;
       }
      })
    })
  }
);

Таким образом, ваш возвращаемый объект будет установлен на карту.Сейчас возврат вашей карты ничего не делает для вас.

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

Вы не должны возвращать значения из методов обратного вызова, переданных в subscribe, поскольку все они недействительны в сигнатуре метода.

Если вы хотите каким-то образом преобразовать ответ вашей службы, а затем присвойте преобразованное значение члену класса returnObj, затем вы должны сделать что-то вроде следующего:

this.myService.getEventMedia()
  .pipe(
      map(response => this.transformResponse(response))
   )
  .subscribe(mappedResponse => this.returnObj = mappedResponse);

private transformResponse(response:Object): Object {
   // your transformation logic goes here
}
...