Rxjs 如何修改对接口的http响应?
我有一个界面:Rxjs 如何修改对接口的http响应?,rxjs,observable,angular8,Rxjs,Observable,Angular8,我有一个界面: 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';
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个字段的响应
我如何返回与接口匹配的响应,使可观察对象只包含2个字段
我想调用getDevices方法,并使用id为、仅名称字段的设备对象数组进行观察。恐怕您必须手动操作
getDevices(): Observable<Array<Device>> {
return timer(200).pipe(mapTo(devices),
map(arr=>arr.map(({name,id})=>({name,id})));
}
相关:它对我不起作用,我得到错误TS2322:类型“Observable”不可分配给类型“Observable”。结果是什么?你看我没有任何结果,我只是复制粘贴你的代码,在apps/marketplace/src/app/devices/state/devices data.service.ts25,5:错误TS2322:类型“Observable”不可分配给类型“Observable”。类型“{name:any;id:any;}”缺少类型“Device[]”中的以下属性:length、pop、push、concat和其他26个属性。apps/marketplace/src/app/devices/state/devices data.service.ts25,51:错误TS2339:类型“{id:string;name:string;serial:string;}[]”上不存在属性“name”。apps/marketplace/src/app/devices/state/devices data.service.ts25,57:错误TS2339:类型“{id:string;name:string;serial:string;}[]”上不存在属性“id”。