{skipLocationChange: true} в router.navigate не работает; изменение состояния

#angular #angular-routing #window-object

#angular #angular-маршрутизация #окно-объект

Вопрос:

Я пытаюсь встроить приложение Angular на страницу JSP, по некоторым причинам мне нужен браузер для сохранения состояния, и я не хочу, чтобы angular добавлял новое состояние в историю браузера.

Согласно документации Angular { skipLocationChange: true } , это позволит мне это сделать. Ниже приведен мой измененный код.

 this.router.navigate(['/customComponent'],{ skipLocationChange: true });
 

по-прежнему Angular отправляет новое состояние истории в историю браузера.

 state: {navigationId: 2}
 

Ниже приведен снимок консоли.

введите описание изображения здесь

Что-то не так с кодом маршрутизации? Или мне не хватает каких-либо параметров.

Комментарии:

1. Я только что протестировал его, и он работает отлично. Не могли бы вы опубликовать HTML-код кнопки, запускающей навигацию, и ts компонента, вызывающего this.router.navigate ?

2. Это сработало и для меня, когда я создал новое приложение с голыми костями, но не работающее в реальном приложении, к сожалению, из-за политик организации я не могу опубликовать здесь фактический код, но опубликую некоторую часть кода.

3. @BernardPagoaga , ниже приведена ссылка на пример, который я пытаюсь, но не работает. stackblitz.com/edit /…

4. Привет @BernardPagoaga Я нашел проблему и добавил ответ.

Ответ №1:

Проблема заключалась в настройке маршрутизации в app.module.ts. Поскольку angular маршрутизирует путь по умолчанию customComponent , он изменяет состояние, и нет возможности передать skipLocationChange параметр, мне пришлось перенаправить на CustomComponent, используя skipLocationChange конструктор from AppComponent, который в моем случае загружен.

Прямая загрузка CustomComponent также поможет в зависимости от написанного кода.

 const appRoutes: Routes = [
{
    path: '',
    redirectTo: "/customComponent",
    pathMatch: 'full'
},
 

Комментарии:

1. У меня такая же проблема. Не могли бы вы объяснить немного подробнее?

2. Для пояснения, вы встраиваете приложение angular на страницу JSP?

Ответ №2:

Я использую this this.router.navigate([‘process-form/’ processDefCustomId ‘/’ TaskId], { skipLocationChange: true }); в constructor() и skipLocationChange: true не работает.

Я переношу свой код в метод ngOnInit(), и skipLocationChange: true работает.