0

我在tap之前的响应中做了一些更正,但在实施之后map我没有被调用。一点也不安慰我。maptapmap

在我们发送给map任何人帮助我之前,在回复中进行一些更正的最佳方法是什么?

以及让我知道tap这里的确切用途。这是我的代码:

createTranslationId(translationId: ModelTranslationId) {
        console.log('translationId', translationId);
        return this.http.post<any>(environment.configUrl + `Configuration`, translationId)
            .pipe(
                tap(response => {
                    return Object.assign({}, response, {
                        Response: {
                            'Name': response.Response.Name,
                            'Description': response.Response.Description,
                            'TypeId': response.Response.TypeId,
                            'Type': response.Response.Type,
                            'Id': response.Response.Id,
                            'CreatedBy': response.Response.CreatedBy,
                            'CreatedDate': response.Response.CreatedDate,
                            'UpdatedBy': response.Response.UpdatedBy,
                            'UpdatedDate': response.Response.UpdatedDate
                        }
                    });
                }),
                map(response => {
                    console.log('response3', response);
                    return response;
                }),
                catchError(this.handleError)
            );
    }

提前致谢。

4

2 回答 2

2

由于 tap 对镜像的 Observable 执行操作,因此您无法对源进行修改,因此您需要使用 map 操作符

所以你可以改变你的功能如下:

createTranslationId(translationId: ModelTranslationId) {
  return this.http.post<any>(environment.configUrl + `Configuration`, translationId)
    .pipe(map(response => {
        response = // Your object modifications
    }),
    // Other pipe operators                
   );
}
于 2019-07-16T10:47:04.157 回答
1

map()是您想要的操作员来转换从网络到达的响应。请参阅地图操作员文档

tap()只是根据响应做一些操作。它不会修改现有的响应,因此在点击表达式中返回某些内容是没有意义的。请参阅水龙头操作员文档

于 2019-07-16T10:30:23.587 回答