【发布时间】:2018-05-04 18:02:47
【问题描述】:
我查看了 RxJs 文档并对此进行了搜索,但无法(令人惊讶地)找到我正在尝试做的事情的示例。
基本上,我有两个服务。一个服务消费另一个服务,需要将消费服务的响应映射到另一种类型。
Angular 应用的示例代码:
@Injectable()
export class EmployeesService {
BASE_URL = 'http://foo.bar.com/api/getEmployees';
constructor(private http: HttpClient) {
}
get(): Observable<IEmployee[]> {
return this.http.get<IEmployee[]>(this.BASE_URL);
}
}
@Injectable()
export class MyEmployeeService {
constructor(private svc: EmployeesService) {
}
get(): Observable<IMyEmployee[]> {
return this.svc.get().map(
(employees:IEmployee[]) => employees.forEach(employee => this.mapEmployeeToMyEmployee(employee))
);
}
private mapEmployeeToMyEmployee(employee: IEmployee): IMyEmployee {
return {
... simple property mapping to transform IEmployee to IMyEmployee
};
}
}
然而,在“MyEmployeeService”中,Typescript 编译器抱怨“返回的表达式类型 Observable(void) 不能分配给类型 Observable(IMyEmployee[])。
即使我要在地图操作中添加返回语句,我仍然会收到同样的投诉。我在这里做错了什么?
【问题讨论】:
标签: angular observable