Estoy tratando de navegar de un componente a otro usando:
this.router.navigate(['/path/'], '_blank');El problema es que el componente al que estoy navegando ya está creado y su método ngOnInit no se ejecuta cuando vuelvo a navegar a la página. Estoy tratando de actualizar los datos que se muestran en la página. Esto está en la función ngOnInit del componente de destino:
this.sub = this._DataService.getData().subscribe(data=> { this.data= data; });¿Cómo puedo decirle al componente de destino que los datos en la página siempre se actualizan al realizar una navegación?
Estoy usando Ag-Grid para mostrar los datos en una tabla. En la función NgOnInit:
this.gridOptions.rowData = this.data;El componente del que vengo originalmente es un formulario para agregar un nuevo objeto. Después de enviar ese objeto, debería redirigir a la cuadrícula y mostrar el nuevo objeto. Es por eso que Grid debería estar actualizando sus datos, pero por alguna razón, solo lo hace cuando lo actualizo manualmente a través de una acción del menú contextual en la cuadrícula, no en la navegación.
La función de envío en el formulario tiene el siguiente aspecto:
onSubmit(data) { this._DataService.addData(data.value).subscribe(); this.router.navigate(['/data/']); }Si navega a la misma ruta y solo cambian los valores de los parámetros, mueva el código de inicialización fuera del constructor y llámelo desde el constructor y cuando cambien los parámetros de la ruta:
constructor(private route:ActivatedRoute) { route.params.subscribe(val => this.initialize()) }Lo arreglé cambiando mi función onSubmit a:
onSubmit(data) { this._DataService.addData(data.value).subscribe(data => { this.router.navigate(['/path]); }); }Gracias a esta pregunta: Angular2: la redirección después del envío no muestra datos actualizados
implementé un componente de redirección
this.router.navigate(['/redirect/', window.location.pathname]);