如何在Angular 2中解析路径参数

拉哈特

我有路线配置

const appRoutes: Routes = [
  { path: '', loadChildren: 'app/+home/home.module#HomeModule' },
  { path: 'auth', loadChildren: 'app/+auth/auth.module#AuthModule' },
  { path: ':category', loadChildren: 'app/+search/search.module#SearchModule' },
  {
    path: '**',
    component: PageNotFoundComponent,
    data: { title: 'Page not found' }
  },
];

我需要检查:category路由参数值是否作为数据库中的搜索类别存在,如果需要,请激活路由,否则转到404页面(在这种情况下为PageNotFoundComponent)。

使用CanActivate是最好的方法吗?导航到404页面如何?

天使厨师

是的,您可以使用CanActivate护罩。

{
  path: ':category',
  loadChildren: 'app/+search/search.module#SearchModule'
  canActivate: [CanActivateCategory]
},

然后,在防护内部执行重定向:

@Injectable()
class CanActivateCategory implements CanActivate {

  constructor(private router: Router,
              private categoryService: CategoryService) {}

  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean>|Promise<boolean>|boolean {
    const obs = this.categoryService.categoryExists(route.params['category']);
    obs.subscribe((exists: boolean) => {
      if (!exists) this.router.navigate('/404');
    });
    return obs;
  }
}

此代码假设您有一个CategoryService来验证类别的存在,并且已声明path的路由/404

最后说明:如果您需要为当前数据预先加载一些数据:category,我会将这段代码放在中Resolve这样,您可以在一个地方完成所有操作:预加载数据,或者如果找不到/预加载数据,则重定向到/404

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在[routerLink]角度2中传递路径参数

来自分类Dev

如何在Angular 2 / Angular中解析tsx文件-Cli

来自分类Dev

如何在Angular中的#之前获取路径

来自分类Dev

如何在VBScript中解析MSI路径?

来自分类Dev

如何在WebApp2中解析Angular POST请求

来自分类Dev

如何在WebApp2中解析Angular POST请求

来自分类Dev

如何在angular 2中处理查询参数

来自分类Dev

如何在Angular 2中访问没有参数的routerlink

来自分类Dev

如何在Angular.js中解析

来自分类Dev

如何在Angular中传递参数

来自分类Dev

Angular 2使用routerLinkActive和URL中基于路径的参数

来自分类Dev

如何在Angular 11中添加两个父级的路径参数?

来自分类Dev

如何在Angular中将多个参数传递给根路径

来自分类Dev

如何在Powershell脚本中解析相对或绝对文件名输入参数的绝对路径?

来自分类Dev

如何在Python中解析函数的参数?

来自分类Dev

如何在Rails中解析此参数?

来自分类Dev

如何在C中执行参数解析?

来自分类Dev

如何在Angular 2 / Typescript中的假路径中预览图片?

来自分类Dev

如何在Angular 2中利用URLSearchParams?

来自分类Dev

如何在Angular 2中关闭模态?

来自分类Dev

导入如何在Angular 2中工作?

来自分类常见问题

如何在Angular 2中取消HTTPRequest?

来自分类Dev

如何在Angular 2中包含模块

来自分类Dev

如何在Angular 2中显示文字{{

来自分类Dev

如何在Angular 2中包含模块

来自分类Dev

如何在 Angular 2 中阅读 AnonymousSubject

来自分类Dev

如何在 Angular 2 中通信组件

来自分类Dev

如何在Angular应用中更改文件路径?

来自分类Dev

如何在Angular应用中更改文件路径?