首页 > 解决方案 > 如何使用带有 routeLink 的拦截器返回状态 url 并保留/预填充表单数据?

问题描述

使用HttpInterceptor并出现403错误时,我刷新令牌并导航回之前的状态/路由器。直到那时,这个概念都很好。

问题是当(以前的)url-state 是带有表单字段的页面/组件时。当拦截器检测到 403 错误并返回此 url 状态时,如何保留表单数据?

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const router = this.injector.get(Router);

    return next.handle(request)
    .pipe(
        catchError((error: HttpErrorResponse) => {
            if ( error instanceof HttpErrorResponse ) {
                if ( error.status === 403 ) {
                    .....
                    router.navigate([ this.activatedRoute.snapshot['_routerState'].url ]);
                }
            }
            if (error.error instanceof ErrorEvent) {
                ....
            }
            return throwError(errMsg);
        })
    );
}

标签: angularangular-http-interceptors

解决方案


推荐阅读