我使用Angular 5.1来构建一个调用几个REST服务的SPA,而且我正在努力应对服务响应。我已经定义了一个模型来表示 Event ,其中一个字段是另一个对象。我想使用JSON.stringify
将对象转换为其字符串表示形式。当服务调用返回一个事件数组时,我继续转换该响应,如下所示:
考虑这个模型:
export class Event {
id: number;
txid: string;
eventDate: Date;
headers: string;
constructor(id: number,
txid: string,
eventDate: Date,
headers: any) {
this.id = id;
this.txid = txid;
this.eventDate = eventDate;
this.headers = JSON.stringify(headers);
}
}
这个服务定义:
const endpoint = 'https://...';
return this
.http
.get<Array<Event>>(endpoint)
.pipe(
tap(
elm =>
elm.map(e =>
new Event(
e.id,
e.txid,
e.eventDate,
e.headers
)
)
),
catchError(this.handleError)
);
但是当我订阅该服务时,它会返回没有转换的数据,好像没有效果。
而不是返回"{"header1": "value1", ...}"
,而是返回Object
。
我做错了什么?
提前致谢
答案 0 :(得分:1)
根据do
的rxjs文档对源Observable上的每个发射执行副作用,但是 返回与源相同的Observable。
这意味着无论你在do
内做什么都不会修改你的输出,这就是为什么没有发生的事情。
如果您想转换源数据,请尝试改为使用map
。