angular 10:我的请求不是在拦截器中从http请求中的observable订阅后发送的



我想要截取所有"删除";http,之前有一个确认对话框。如果用户点击";是";一个请求是send-elsenothingappend。

我的拦截器看起来像:

@Injectable()
export class DeleteInterceptor implements HttpInterceptor {
constructor(private dialog: MatDialog) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (req.method == 'DELETE') {
this.dialog.open(ConfirmDeleteComponent).afterClosed().subscribe(result => {
if (result) {
return next.handle(req); // don't send
}
});
}else{
return next.handle(req); // work correctly
}
}
}

谢谢你的帮助,Eva

@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
constructor(private dialog: MatDialog) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// add custom header
if (req.method == 'DELETE') {
console.log(req)
return this.dialog.open(ExampleDialogComponent).afterClosed().pipe(
filter(res => res),
switchMap(res =>                      next.handle(req) // don't send
)
)

}else{
return next.handle(req); // work correctly
}
}
}

这应该能解决问题。你最终需要返回一个可观察的。