угловой: заменить сегмент в URL - PullRequest
0 голосов
/ 08 июля 2019

Этот вопрос является дубликатом следующих существующих вопросов здесь, на SO:

Угловой маршрутизатор: как заменить парам?

В общем случае замените параметр маршрута Angular 2 и выберите

Angular 6 router - заменить некоторые параметры текущего маршрута

Angular2-router: Как изменить только параметр маршрута?

Как изменить определенный внутренний параметр маршрута в Angular2

Ни один из ответов на эти вопросы не решает полностью проблему замены одного сегмента в URL, поэтому я снова задаю этот вопрос.

Подводя итог моей ситуации:

Вот некоторые из маршрутов в моем проекте (я сам не придумал этого, поэтому, пожалуйста, потерпите меня)

/:customer/static/part/of/url
/:customer/other/static/stuff
/something/for/the/:customer
/something/without/anything
/other/stuff/:customer/might/need

Параметр «: customer» появляется в разных местах URL. Моя проблема в том, что этот идентификатор клиента может измениться во внутреннем интерфейсе без каких-либо действий со стороны внешнего интерфейса. Я слушаю изменения в бэкэнде и должен соответствующим образом изменить URL-адрес в случае изменения идентификатора клиента.

Простое string.replace не подойдет, потому что технически идентификатор клиента может фактически и буквально быть «статическим» или «другим».

Вопрос:

Как я могу проанализировать текущий URL-адрес (ActivatedRoute?), Чтобы заменить только одну часть URL-адреса, относящуюся к идентификатору клиента (paramMap имеет "customer"), сохранив остальную часть URL-адреса как есть?

1 Ответ

0 голосов
/ 08 июля 2019

Чтобы прочитать текстовый шаблон в строке, я бы предложил регулярное выражение.

Например, если ваш идентификатор клиента похож на '123456', регулярное выражение может быть / \ d {6} / (косая чертаздесь для описания шаблона регулярных выражений, а не URL-адресов):

let url = '/something/for/the/123456' // 123456 denotes :customer here
let pattern = /\d{6}/;

let customerId = url.match(pattern);

Позаботьтесь об определении шаблона, который соответствует только идентификатору клиента в URL.

Вы можете найти дополнительную информациюдля регулярных выражений JavaScript здесь: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp

И я почти забыл, вы можете заменить шаблон в строке, используя функцию String.replace (): https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/String/replace

...