2016-12-15 123 views
0

我有两条路线我想匹配,但它们相互冲突。我有一个通用的路线,其中path: ":page",但我有另一个具体的路线path: "id_token"。理想情况下,路由器会首先检查path: "id_token"是否匹配,然后再回到path: ":page"Angular 2路由 - 如何处理路由匹配冲突?

export const ROUTES: Route[] = [ 

    // If this route is a match then use this config 
    { 
     path: "id_token", 
     pathMatch: "prefix", 
     redirectTo: ":page/d", 
    }, 

    // Otherwise use this config 
    { 
     path: ":page", 
     component: "PageComponent", 
    } 
]; 

回答

1

您可以使用CanActive

@Injectable() 
class MyCanActivate implements CanActivate { 
    constructor() {} 
    canActivate(
     route: ActivatedRouteSnapshot, 
     state: RouterStateSnapshot 
    ): Observable<boolean>|Promise<boolean>|boolean { 
     return true/false; //to active/deactive your route 
    } 
} 

然后您路线:

export const ROUTES: Route[] = [ 

    // If this route is a match then use this config 
    { 
     path: "id_token", 
     pathMatch: "prefix", 
     redirectTo: ":page/d", 
     canActivate: [MyCanActivate] 
    }, 

    // Otherwise use this config 
    { 
     path: ":page", 
     component: "PageComponent", 
    } 
];