Existe alguma maneira de enviar dados como parâmetro com router.navigate? Quero dizer, algo como este exemplo, como você pode ver a rota tem um parâmetro de dados, mas fazer isso não está funcionando:
this.router.navigate(["heroes"], {some-data: "othrData"})
porque some-data não é um parâmetro válido. Como eu posso fazer isso? Não quero enviar o parâmetro com queryParams.
angular
routing
angular-router
Motomine
fonte
fonte
Respostas:
Há muita confusão sobre esse tópico porque existem muitas maneiras diferentes de fazer isso.
Aqui estão os tipos apropriados usados nas seguintes capturas de tela:
1) Parâmetros de roteamento necessários:
2) Parâmetros opcionais da rota:
3) Parâmetros de consulta de rota:
4) Você pode usar um serviço para passar dados de um componente para outro sem usar parâmetros de rota.
Para obter um exemplo, consulte: https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/
Eu tenho um plunker disso aqui: https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview
fonte
route
tipo éActivatedRoute
, nãoRouter
.Existe um novo método que veio com o Angular 7.2.0
https://angular.io/api/router/NavigationExtras#state
Enviar:
Receber:
Você pode obter algumas informações adicionais aqui:
https://github.com/angular/angular/pull/27198
O link acima contém este exemplo, o que pode ser útil: https://stackblitz.com/edit/angular-bupuzn
fonte
ngOnInit()
comothis.router.getCurrentNavigation().extras
A versão mais recente do angular (7.2 +) agora tem a opção de passar informações adicionais usando o NavigationExtras .
Componente inicial
newComponent
Resultado
Espero que isso ajude!
fonte
@ dev-nish Seu código funciona com pequenos ajustes neles. faça o
para dentro
se desejar enviar especificamente um tipo de dados, por exemplo, JSON como resultado de um preenchimento de formulário, você poderá enviar os dados da mesma maneira como explicado anteriormente.
fonte
Em navigateExtra, podemos passar apenas algum nome específico como argumento, caso contrário, ele mostra um erro como abaixo: Por exemplo, aqui quero passar a chave do cliente no roteador navigate e passo assim-
mas mostrando algum erro como abaixo:
.
Solução: temos que escrever assim:
fonte
O melhor que encontrei na internet para isso é o ngx-navigation-with-data . É muito simples e bom para navegar nos dados de um componente para outro. Você precisa apenas importar a classe de componente e usá-la de maneira muito simples. Suponha que você tenha um componente residencial e sobre o qual deseja enviar dados.
COMPONENTE EM CASA
SOBRE O COMPONENTE
Para qualquer consulta, siga https://www.npmjs.com/package/ngx-navigation-with-data
Comente para obter ajuda.
fonte