根据路由参数定义要重定向的 Angular 路由

Define Angular routes to redirect depending on route parameters

我有一个非常简单的 Angular 路由模块,用于从一条路由重定向到另一条路由:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  {
    path: 'foo',
    redirectTo: 'bar',
    pathMatch: 'full'
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
  providers: []
})
export class FooRoutingModule { }

现在,我想更改重定向,使其依赖于一个路由参数(可能有比这个更多的参数)。因此,foo?para=0 应该重定向到 barA,而 foo?para=1 应该重定向到 barB。实现这一目标的最简单方法是什么?

您可以使用 Guards 来操纵路由。

在你的情况下,CanActivate 守卫应该能很好地完成这项工作。在这里阅读更多关于它们的信息:https://angular.io/guide/router#canactivate-requiring-authentication

@Injectable()
export class MyGuard implements CanActivate {

  constructor(public router: Router) {}

  canActivate(route: ActivatedRouteSnapshot) {
   switch(route.queryParams['para']) {
     case '0' :
        this.router.navigate(['my/url]);
        break;
     case '1':
          ....
    }
    return false;
  }
}

"return false;"在您的路由中非常重要,因此当前导航(在您的情况下为'foo')被取消。

在你的路由中

const routes: Routes = [
  {
    path: 'foo', canActivate:[ MyGuard ]
  }
];