Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angular – 路由解析时RxJS forkJoin句柄错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在尝试进行路由解析时,我似乎无法找到一种方法来捕获/处理forkJoin中的错误.

我为Account页面创建了一个路由解析器,它应该在路由之前返回2个请求.现在这是我无法解决的部分:如果用户没有订阅,则从服务器返回404.我想处理这个问题,如果发生这种情况,用户应该被路由到另一个页面,从那里他可以订阅.

import { Injectable } from '@angular/core';
import { Resolve,ActivatedRouteSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Rx';
import { AccountService } from './account.service';

@Injectable()
export class AccountResolver implements Resolve<any> {
    constructor(private accountService: AccountService) { }

    resolve(route: ActivatedRouteSnapshot): Observable<any> {
        return Observable.forkJoin([
            this.accountService.getUser(),this.accountService.getUserSubscriptions()
        ]);
    };
}

当请求getUserSubscriptions()时,如何捕获并处理服务器发送的错误404

解决方法

您可以捕获错误,并重定向到所需的路由,如下所示:

@Injectable()
export class AccountResolver implements Resolve<any> {
    constructor(private accountService: AccountService,private router: Router) { }

    resolve(route: ActivatedRouteSnapshot): Observable<any> {
        return Observable.forkJoin([
            this.accountService.getUser(),this.accountService.getUserSubscriptions()
                .catch(error => {
                    if(error.status === 404) {
                        this.router.navigate(['subscription-create']);
                    }

                    return Observable.throw(error);
                })
        ]);
    };
}

这样,错误就会被处理,但也会以原始形状返回到resolve方法,因此解析器可以拒绝访问以前的目标路由(forkJoin中的任何失败请求都会导致forkJoin本身失败).

大佬总结

以上是大佬教程为你收集整理的angular – 路由解析时RxJS forkJoin句柄错误全部内容,希望文章能够帮你解决angular – 路由解析时RxJS forkJoin句柄错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: