Маршрутизатор angular использует параметры маршрута, такие как :productId
, для сопоставления маршрутов и построения карты параметров.
Я хотел бы сделать обратное. Учитывая шаблон URL, такой как /products/:productId/components
(в виде строки), и карту параметров, я хотел бы заполнить заполнители в шаблоне URL.
Есть ли простой способ сделать это?
Обновление:
Вот тривиальная реализация, которая работает:
let parts = urlTemplate.split('/'); // urlTemplate might be something like '/products/:productId/components'
parts = parts.map(p => {
if (p.startsWith(':')) {
return paramMap.get(p.substr(1));
} else {
return p;
}
});
const url = parts.join('/'); // could be something like '/products/27/components'
Я надеялся найти подход, где мне не нужно выполнить анализ URL самостоятельно (потому что могут быть более сложные URL, которые не будут работать с описанным выше подходом), но разрешить замену маршрутизатору angular. Однако для моего варианта использования приведенная выше тривиальная реализация может быть достаточно хорошей.