javascript - 从 HttpInterceptor 显示模式对话框

标签 javascript angular typescript angular-material httpinterceptor

@Injectable()
export class MyInterceptor implements HttpInterceptor
{
    intercept(req : HttpRequest<any>, next : HttpHandler) : Observable<HttpEvent<any>>
    {
//show a modal dialog to hold the request until user respond/close the dialog
        if(ShowModalDialog())
        {
            return next.handle(req);
        }
        else
        {
//route to login
        }
    }
}

我尝试显示一个 Angular Material 对话框,但它不会阻止请求,并且会继续执行下一行。

我需要知道如何在出现请求错误响应时从拦截器显示模式对话框,向用户显示一些选项并在对话框关闭后恢复执行。

是否可以使用此类对话框停止/保留请求?

最佳答案

您可以使用 Angular Material 对话框来完成此操作:

@Injectable()
export class MyInterceptor implements HttpInterceptor {
  constructor(private dialog: MatDialog, private router: Router) {}
  
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if(ShowModalDialog()) {
      return this.dialog.open(DialogModalComponent).afterClosed().pipe(
        concatMap(() => next.handle(req))
      );
    } else {
      return next.handle(req);
    }
  }
}

关于javascript - 从 HttpInterceptor 显示模式对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62782676/

相关文章:

javascript - 如何让匿名用户访问 rpc api

typescript - Winston 自定义日志级别 typescript 定义

javascript - 基于字符串创建 NGRX 操作的工厂

javascript - 从 s3 获取视频文件后如何在浏览器中播放?

javascript - 如何在 Angular 2 中仅将特定字段对象复制到另一个对象中

javascript - 如何管理同步 DOM 修改

angular - 如何让 Observable 返回转换后的项目数组(Rxjs)

angular - 什么是区域转弯?

带有 svg 元素的 Angular svg 匹配组件

javascript - Angular 6 : ExpressionChangedAfterItHasBeenCheckedError triggered from select drop-down event