首页 文章

Angular 2 Route params验证

提问于
浏览
7

如何在Angular2中验证Route params?例如,我有一条路线:

{path: 'artist/:id', component: ArtistInfoComponent}

我想要的是检查参数 id 是否是有效数字,如果是,只显示该组件 . 否则显示包含错误消息的页面 .

我在Angular 2中找到了Route Guards,但我认为这不是进行验证的最佳方式,因为我可以为不同的页面设置许多不同的参数,并为所有这些页面编写单独的Route Guard不是我想要的 .

是否有可能为每个路由参数指定正则表达式?

UPD: Maybe there is a way to do a validation on query params? I mean if I have such url: /search?q=blablabla&page=2 how can I check if the parameter page is valid? Is there a way to do it without Guards?

2 回答

  • 2

    防护是可行的方法,您可以将验证配置放入路径的 data 部分,并创建可重复使用的防护,以根据此配置验证参数 .

  • 0

    通过使用 ActivatedRoute 服务,您可以获取参数并匹配您拥有的ID列表中的参数 . 如果匹配则显示详细信息,否则显示错误消息 .

    exammple:

    步骤1:在组件构造函数中注入(传递)ActivatedRoute

    constructor(private activtedRoute: ActivatedRoute){}
    

    第2步:

    constructor(private activtedRoute: ActivatedRoute){
         this.activtedRoute.paramMap.subscribe((params: ParamMap) => {
              const routeIdParam = params.get('id');
              if(this.validateId(routeIdParam)){
                 // code to display info
                    } else {
                  // code to show error message!
                 }   
               }
    
    validateId(id): Boolean{
      return idArray.find(id); 
    }
    

相关问题