#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 работает.