我有一个界面:
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,name字段的设备对象数组进行观察。
答案 0 :(得分:1)
恐怕您将不得不手动操作。
getDevices(): Observable<Array<Device>> {
return timer(200).pipe(mapTo(devices),
map(arr=>arr.map(({name,id})=>({name,id})));
}