In Angular 6 how make case insensitive url pattern?

后端 未结 3 1870
耶瑟儿~
耶瑟儿~ 2020-12-17 15:09

In my case I want to support same url in case insensitive manner.

Example: it should support all url

localhost:1029/documentation
localhost:1029/DOCU         


        
相关标签:
3条回答
  • 2020-12-17 15:48

    This will work, configure the route to NotFoundComponent with wild character like below

    {path:'**',component:NotFoundComponent}
    

    then, in the NotFoundComponent.ts file, add the below lines inside ngOnInit()

    if(this.route.snapshot.url[0].path.toLowerCase()!==this.route.snapshot.url[0].path)
          this.router.navigate([this.route.snapshot.url[0].path.toLowerCase()]);
    

    You have to import ActivatedRoute,Router from '@angular/router' and inject in constructor like below

    constructor(private route:ActivatedRoute,
        private router:Router) { }
    

    Here if condition in ngOnInit() makes sure that it won't route or navigate infinitely

    0 讨论(0)
  • 2020-12-17 15:49

    You need a UrlSerializer as follow:

    import { DefaultUrlSerializer, UrlTree } from '@angular/router';
    
    
     export class LowerCaseUrlSerializer extends DefaultUrlSerializer {
       parse(url: string): UrlTree {
          return super.parse(url.toLowerCase());
      }
    }
    

    And then added it as a provider in the app.module.ts

    providers: [
     {
       provide: UrlSerializer,
       useClass: LowerCaseUrlSerializer
    }
    ]
    
    0 讨论(0)
  • 2020-12-17 16:02

    You should add this provide statement to the app.module.ts

    import { DefaultUrlSerializer, UrlTree } from '@angular/router';
    
    export class LowerCaseUrlSerializer extends DefaultUrlSerializer {
        parse(url: string): UrlTree {
            // Optional Step: Do some stuff with the url if needed.
    
            // If you lower it in the optional step 
            // you don't need to use "toLowerCase" 
            // when you pass it down to the next function
            return super.parse(url.toLowerCase()); 
        }
    }
    

    And

    @NgModule({
        imports: [
          ...
        ],
        declarations: [AppComponent],
        providers: [
            {
                provide: UrlSerializer,
                useClass: LowerCaseUrlSerializer
            }
        ],
        bootstrap: [AppComponent]
    })
    
    0 讨论(0)
提交回复
热议问题