Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

421
Vistas
Angular2: hacer que las rutas de ruta no distingan entre mayúsculas y minúsculas

Tengo la siguiente configuración de enrutamiento.

 @RouteConfig([ { path: '/home', name: 'Homepage', component: HomepageComponent, useAsDefault: true } ) export class AppComponent { }

siempre que el navegador apunte a /home esta ruta funciona pero no para /Home o cualquier otra variación de caso. ¿Cómo puedo hacer que el enrutador enrute al componente sin importar el caso?

Gracias

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto es lo que hice.

 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()); } }

Y

 @NgModule({ imports: [ ... ], declarations: [AppComponent], providers: [ { provide: UrlSerializer, useClass: LowerCaseUrlSerializer } ], bootstrap: [AppComponent] })
over 4 years ago · Santiago Trujillo Denunciar

0

Una pequeña corrección para la respuesta de Timothy , que no cambia el caso de los nombres y valores de parámetros coincidentes:

 import {Route, UrlSegment, UrlSegmentGroup} from '@angular/router'; export function caseInsensitiveMatcher(url: string) { return function( segments: UrlSegment[], segmentGroup: UrlSegmentGroup, route: Route ) { const matchSegments = url.split('/'); if ( matchSegments.length > segments.length || (matchSegments.length !== segments.length && route.pathMatch === 'full') ) { return null; } const consumed: UrlSegment[] = []; const posParams: {[name: string]: UrlSegment} = {}; for (let index = 0; index < matchSegments.length; ++index) { const segment = segments[index].toString().toLowerCase(); const matchSegment = matchSegments[index]; if (matchSegment.startsWith(':')) { posParams[matchSegment.slice(1)] = segments[index]; consumed.push(segments[index]); } else if (segment.toLowerCase() === matchSegment.toLowerCase()) { consumed.push(segments[index]); } else { return null; } } return { consumed, posParams }; }; }

Editar : además del problema explicado anteriormente, hay otro error sutil que se resuelve ahora. El ciclo for debe iterar sobre matchSegments en lugar de sobre segments .

over 4 years ago · Santiago Trujillo Denunciar

0

actualizar

Esto no llegó al nuevo enrutador todavía

original

Los emparejadores Regex se introdujeron recientemente. Esto podría ayudar para su caso de uso.

Ver https://github.com/angular/angular/pull/7332/files

Y este Plunker de Brandon Roberts

 @RouteConfig([ { name : 'Test', //path : '/test', regex: '^(.+)/(.+)$', serializer: (params) => new GeneratedUrl(`/${params.a}/${params.b}`, {c: params.c}), component: Test // useAsDefault: true } ])
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda