Saudações pessoal!
Estou desenvolvendo um sistema web em Angular, no qual possui uma barra de pesquisa no header. Visto isso, quando o botão de busca é clicado chama a seguinte função:
onSearch(){
this.router.navigate(['detalhesPedido', this.pedido]);
}
No meu componente "detalhesPedido", possuo o seguinte código:
export class DetalhesPedidoComponent implements OnInit {
constructor(private activatedRoute: ActivatedRoute) { }
pedidos: Order[];
public paginaAtual = 1;
ngOnInit(): void {
this.pedidos = this.activatedRoute.snapshot.data.pedido;
}
}
Quando a view é iniciada é utilizado o resolver abaixo para fazer a requisição http e retornar os detalhes do pedido buscado:
export class SearchOrderResolver implements Resolve<Observable<Order[]>>{
constructor(private service: SearchOrderService){}
pedido: string;
pedidoPesquisa = {
pedido:""
};
resolve(route: ActivatedRouteSnapshot, state:RouterStateSnapshot){
this.pedidoPesquisa.pedido = route.params.pedido;
this.pedidoPesquisa.pedido = this.pedidoPesquisa.pedido.replace(/\s/g, '');
return this.service.searchOrderById(this.pedidoPesquisa);
}
}
Até ai tudo está funcionando normalmente. Porém quando efetuo uma nova pesquisa, os valores do pedido não são atualizados na views apenas na URL.
Exemplo, quando eu busco o pedido 1234 a view "detalhesPedido" é exibida com sucesso, mostrando todas a informações do pedido. Contudo, caso eu busque o pedido 1235 o valor da URL é alterado para o novo pedido mas a view continua com os valores do pedido anterior.