Как я могу изменить HTTP-ответ на интерфейс? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть интерфейс:

export interface Device {
  id: string;
  name: string
}

и я высмеиваю http-ответ с дополнительными данными:

import { Injectable } from '@angular/core';
import { Device } from './device.model';
import { Observable, timer } from 'rxjs';
import { mapTo } from 'rxjs/operators';
const devices = [
  {
    id: '1',
    name: 'device1',
    serial: 'fdfd'

  },
  {
    id: '2',
    name: 'device2',
    serial: 'fdfd'
  },
];
@Injectable({
  providedIn: 'root'
})
export class DevicesDataService {

  constructor() { }
  getDevices(): Observable<Array<Device>> {
    return timer(200).pipe(mapTo(devices));
  }
}

Проблема в том, что возвращается ответ с 3 полями.

Как вернуть ответ, соответствующий интерфейсу, чтобы Observable<Array<Device>> содержал только 2 поля?

Я хочу вызвать метод getDevices() и получить доступ к массиву объектов устройства только с id, полями имен.

1 Ответ

1 голос
/ 11 июля 2019

Боюсь, вам придется это делать вручную.

getDevices(): Observable<Array<Device>> {
    return timer(200).pipe(mapTo(devices),
    map(arr=>arr.map(({name,id})=>({name,id})));
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...