Маршрут
const appRoutes: Routes = [
{ path: '', redirectTo: '/companies/unionbank', pathMatch: 'full'},
{ path: 'companies/:bank', component: BanksComponent },
{ path: '**', redirectTo: '/companies/unionbank' }
]
Составная часть
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' },
]
},
...
]
Пример ссылки: http://localhost:8099/#/companies/bdo
Я хочу получить String
bdo по ссылке выше.
Я знаю, что могу получить ссылку с помощью window.location.href и разбить ее на массив. Итак, я могу получить последний параметр, но я хочу знать, есть ли правильный способ сделать это угловым способом.
Любая помощь будет оценена. благодаря
источник
paramMap
, вы должны использоватьparams.get('bank')
вместо этого.this.route.snapshot.paramMap.get('bank');
иthis.route.snapshot.params.bank;
?В Angular 6+ это обрабатывается немного иначе, чем в предыдущих версиях. Как упоминает @BeetleJuice в ответе выше ,
paramMap
это новый интерфейс для получения параметров маршрута, но выполнение немного отличается в более поздних версиях Angular. Предполагая, что это в компоненте:Я предпочитаю использовать и то, и другое, потому что тогда при прямой загрузке страницы я могу получить параметр идентификатора, а также при навигации между связанными объектами подписка будет обновляться должным образом.
Источник в Angular Docs
источник
switchMap
нужно здесь? Разве подписка не будет вызвана при прямой загрузке страницы?map
оператора RxJS . Но онHeroService
возвращаетObservable<Hero>
. Таким образом,switchMap
вместо этого вы сглаживаете Observable с помощью оператора.switchMap
Оператор также отменяет предыдущие запросы в полете. Если пользователь повторно переходит к этот маршрут с новым, вid
то времяHeroService
как все еще извлекает старыйid
,switchMap
отбрасывает этот старый запрос и возвращает героя для новогоid
. "