С помощью Angular 8 я создал страницу «обратного вызова при входе», которая должна перенаправлять (по ссылке или автоматически) на предыдущую страницу. Но предыдущая страница может содержать некоторые вторичные маршруты.
Итак, чтобы избежать «полной перезагрузки» страницы навигации, я попытался использовать [routerLink] в шаблоне для построения «go to previous page» Кнопка и «this.router.navigate (...)» внутри контроллера, если я хочу перенаправить программно.
Проблема в том, что Angular не может правильно сериализовать вторичный маршрут (с круглыми скобками) )
Пример:
Контроллер:
constructor(private router: Router){}
public redirectRoute: string;
onInit() {
this.redirectRoute = '/home(modal:modal/secondary);param1=value1';
}
Шаблон:
<a [routerLink]="redirectRoute">Go to previous page</a>
URL-адрес встроенной круглой скобки, ( становится % 28 и ) становится % 29 . Таким образом, навигация завершается неудачно, маршрут не распознается и происходит откат по маршруту по умолчанию.
На самом деле «redirectRoute» является динамическим c, поэтому я не ищу ответ типа «build redirectRoute» в шаблоне. напрямую». Конечно, это работает, но я не могу.
Я пробовал много вещей; Я могу разобрать URL (с this.router.parseUrl(rawRedirectUrl);
), он возвращает хорошее URLTree (вторичный маршрут сформирован правильно), но я не могу найти, как использовать URLTree в теге [routerLink].
То же самое произошло, если я хочу перенаправить с помощью this.router.navigate(this.redirectRoute)
...
Как правильно перенаправить без перезагрузки всей страницы?
Спасибо!
[EDIT]
Я открыл https://github.com/angular/angular/issues/35414