Angular 5 Показать предупреждение браузера при изменении параметра запроса

У меня есть родительский компонент Item, у которого есть маршрут '/Item'.

У меня есть два дочерних компонента имени компонента Каталог и компонент AddSize.

По умолчанию компонент Каталог будет загружен с маршрутом '/item?q=catalogue', Затем пользователь выбирает продукт, после чего маршрут будет изменен на '/item?q=add_size' и AddSize компонент будет загружен.

Теперь, если браузер нажимает кнопку возврата браузера, параметр запроса будет изменен с '/item?q=add_size' в '/item?q=catalogue',

У меня проблема, когда пользователь нажимает кнопку "Назад" в '/item?q=add_size' предупреждение о маршруте в браузере не работает.

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

Есть ли у нас альтернативные решения?

1 ответ

Вам необходимо создать подписку на свой маршрут.

this._route.queryParams
    .subscribe(
        params => {
            this.q = params['q'];
            if (q == 'add_size') 
            {
                do something
            }   
            else if (q == params['catalogue']) 
            {
                do something else
            }       
            });

Поместите это в свой код OnInit().

Другие вопросы по тегам