Ruta
const appRoutes: Routes = [
{ path: '', redirectTo: '/companies/unionbank', pathMatch: 'full'},
{ path: 'companies/:bank', component: BanksComponent },
{ path: '**', redirectTo: '/companies/unionbank' }
]
Componente
const NAVBAR = [
{
name: 'Banks',
submenu: [
{ routelink: '/companies/unionbank', name: 'Union Bank' },
{ routelink: '/companies/metrobank', name: 'Metro Bank' },
{ routelink: '/companies/bdo', name: 'BDO' },
{ routelink: '/companies/chinabank', name: 'China Bank' },
]
},
...
]
Ejemplo de enlace: http://localhost:8099/#/companies/bdo
Quiero obtener String
bdo en el enlace de ejemplo anterior.
Soy consciente de que puedo obtener el enlace usando window.location.href y dividirlo en una matriz. Entonces, puedo obtener el último parámetro, pero quiero saber si hay un método adecuado para hacer esto de forma angular.
Cualquier ayuda sería apreciada. Gracias
fuente
paramMap
, deberías usar en suparams.get('bank')
lugar.this.route.snapshot.paramMap.get('bank');
ythis.route.snapshot.params.bank;
?A partir de Angular 6+, esto se maneja de manera ligeramente diferente a las versiones anteriores. Como @BeetleJuice menciona en la respuesta anterior ,
paramMap
es una nueva interfaz para obtener parámetros de ruta, pero la ejecución es un poco diferente en las versiones más recientes de Angular. Suponiendo que esto está en un componente:Prefiero usar ambos porque luego, en la carga directa de la página, puedo obtener el parámetro de ID, y también si navego entre entidades relacionadas, la suscripción se actualizará correctamente.
Fuente en Angular Docs
fuente
switchMap
requeriría aquí? ¿No se llamará también al suscriptor cuando se cargue la página directamente?map
operador RxJS . Pero elHeroService
resultado es unObservable<Hero>
. Entonces, en su lugar, aplana el Observable con elswitchMap
operador. ElswitchMap
operador también cancela las solicitudes anteriores en vuelo. Si el usuario vuelve a navegar a esta ruta con una nueva,id
mientrasHeroService
que todavía está recuperando la antiguaid
,switchMap
descarta esa solicitud anterior y devuelve el héroe para la nuevaid
".