Angular 6 router - замените некоторые параметры текущего маршрута - PullRequest
0 голосов
/ 06 октября 2018

В моем решении Angular 6 URL имеют следующую структуру:

/ {language} / {app_section} / {object_id} / {view}? Queryparams ...

ЯзыкКомпонент селектора является общим для всех разделов приложения и включается в шаблон одного из родительских маршрутов, так что он появляется во всех дочерних маршрутах.

Когда пользователь выбирает новый язык, компонент должензамените только сегмент {language} текущего маршрута, оставив все остальное без изменений, и перейдите к новому маршруту.Кажется, это должно быть просто, но я не могу найти легкий путь.Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 07 октября 2018

Да, это возможно.Прочитайте текущий маршрут, замените язык и перейдите к этому URL.

constructor(private _router: Router ) {
}

languageSelected(newLanguage) {
  const newUrl = this._router.url.replace(this.currentlanguage, newLanguage);
  this.router.navigateByUrl(newUrl);
}

Я предположил, что this.currentLanguage содержит текущий язык в точности так, как он представлен в URL, а newLanguage передан методутакже в точной форме, требуемой URL.Такая техника приведет к обновлению компонента, и временное состояние будет потеряно.

...