いくつかの方法では、レスポンスボディを、他の観測値からの値に基づいて変更できないようです。HttpInterceptorは他の観測値からの値に基づいて応答ボディを変更します
リクエストを変更するのは簡単ですが、私はレスポンスをどのように行うのか分かりません。
@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
constructor(private _injector: Injector) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).map((event: HttpEvent<any>) => {
if (!(event instanceof HttpResponse)) return event;
const translateService = this._injector.get(TranslateService);
// retrieved the key from the reponse, now need to retrieve data from the translateservice
translateService.get(`${event.body.key}`).subscribe((value: string) => {
event.body.message = value;
});
// how to return new response ??
return event.clone({ body: event.body });
});
}
}
私は基本的に新しいプロパティの 'message'を持つ新しい応答体を返したいと思います。
これはtranslateService.getの値に解決されますか?どのようにしてその価値を身体に付け加えることができますか? – Lars
'translateService.get()'にマップを追加し、 'get()'関数の値としてeventbody.messageの値を返すべきマップを追加しました。 – theOriginalJosh
私は身に直接書き込むことができなかったので、私はクローンイベントを作らなければなりませんでした。正しいパスに私を入れてくれてありがとう:)。私の答えを見てください。最終結果 – Lars