RxJS中的转换未返回修改后的对象

时间:2017-12-11 19:47:57

标签: angular rxjs observable

我使用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

我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

根据do

的rxjs文档
  

对源Observable上的每个发射执行副作用,但是   返回与源相同的Observable。

这意味着无论你在do内做什么都不会修改你的输出,这就是为什么没有发生的事情。

如果您想转换源数据,请尝试改为使用map