#angular
#angular
Вопрос:
Как передать некоторые дополнительные данные между угловыми маршрутами:
navigateToItem(item: Item) {
this.router.navigate(
['itemss', item.name],
{ state: { data: { id: item.id } } }
);
}
Похоже, мы можем передать Navigation Extras
, как в приведенном выше методе.
Но как я могу получить доступ к этому в целевом маршруте.
Я также использую ngrx-router-store
. (если это также можно сделать с помощью хранилища маршрутизаторов ngrx, пожалуйста, предложите это также, но не обязательно)
Если вы передаете некоторые дополнительные динамические данные отдельно от params
или queryparams
, пожалуйста, предложите это. (потому что я не хочу отображать дополнительные параметры, подобные id
или любые дополнительные данные во фрагменте url.)
Поэтому мне нужно передать их и получить к ним доступ, как указано выше
Комментарии:
1. Я не уверен, почему в angular нет такого механизма для передачи некоторых дополнительных скрытых данных (т. Е. которые не отображаются в строке url) между маршрутами (вместо использования сервисов), даже у react и vue есть такая возможность.
Ответ №1:
Функция getCurrentNavigation, представленная в маршрутизаторе, — это то, что вы ищете. Убедитесь, что вы вызываете это в конструкторе компонента, к которому вы переходите, иначе информации там не будет. (Я думаю, вы все равно можете получить к нему доступ из истории)
Предпочтительным методом было бы:
constructor(private router: Router) {
this.itemId= this.router.getCurrentNavigation().extras.state.data.id;
}
Комментарии:
1. Я тоже пробовал это… Но у него есть только одна пара ключ-значение
{replaceUrl: true}
, больше ничего!!2. @mex Пока вы вызываете это из конструктора, информация должна присутствовать. Не могли бы вы предоставить ссылку на stackblitz, воссоздающую проблему?
3. ДА. Я вызываю это из конструктора… Я не уверен, что происходит…
4. Не могли бы вы попробовать получить доступ через
this.itemId=history.state.data.id
5. Да …. это метод, который я использую вместо этого, он работает… но мне это не нравится… Я думал, что у angular будет механизм для этого… но, похоже, нам нужно придерживаться ванильного js