У меня был подобный вариант использования, и я смог заставить его работать, добавив шаг шага к маршрутизатору, который изменяет конфигурацию «на лету».
Мой случай использования может быть немного отличается тем, что я только хочу, чтобы элемент появится в навигационной панели, когда маршрут активен - у меня есть маршруты /abc
, /def/:id
и /ghi
- когда активный маршрут ABC или GHI, в навигационной панели появятся только те элементы, но когда активный маршрут DEF, он должен появиться в навигационной панели, и щелчок на нем должен привести к тому же идентификатору DEF, который вы сейчас просматриваете. Таким образом, моя конфигурация маршрута включает параметр, указывающий, что маршрут должен появляться только на панели навигации, когда это активный маршрут.
Вот интересные части моей фактической функции configureRouter:
configureRouter(config, router) {
config.addPreActivateStep(Preactivate); // explained below
config.map([
// some routes
{ route: 'patients/:patientId', name: 'patient-master',
moduleId: 'patients-and-cases/patient-master/patient-master',
title: 'Patient', nav: true, settings: { renderOnlyWhenActive: true },
href: '#' // it doesn't matter what this is
},
// more routes
]);
}
А вот Preactivate
класс, который устанавливает HREF на предварительно активировать:
class Preactivate {
run(routingContext, next) {
routingContext.config.href = routingContext.fragment;
return next();
}
}
Если, в отличие от меня, вы хотите, чтобы это для отображения в навигационной панели все это время, это все равно будет работать - href просто останется установленным на последнее, на что он был установлен, когда маршрут был активным. В этом случае вы, вероятно, захотите инициализировать его до значения по умолчанию, которое имеет смысл.
Но если я удалю ** атрибут ** href ** в конфигурации маршрута? Если я попытаюсь удалить его, я получаю следующую ошибку: «ERROR [app-router] Ошибка: неверная конфигурация маршрута для«: id?/RequestAuth »: динамические маршруты должны указывать« href: »для включения в навигационную модель .' – Themos
Это потому, что у вас есть свойство 'nav: true'. Если вы не планируете использовать этот маршрут в какой-либо форме навигационной панели или что-то в этом роде, то удалите это, и маршрутизатор перестанет жаловаться. –
Но что, если я действительно хочу использовать его в навигационной панели? – Themos