Angular2 router.navigate página de actualización

Así es como se ven las rutas y los componentes:

routes.config

export const routes: RouterConfig = [ { path: 'users', component: UsersComponent, canActivate: [AuthGuard] }, { path: 'users/new', component: NewUserComponent }, ]; 

new-user.component

  addField(newName: string){ this.items.push({ name: newName, }) this._router.navigate(['/users']) 

¿Se supone que Angular2 debe actualizar la página en enrutador.navigate?

¿Qué más usar en lugar de router.navigate para evitar la actualización de la página?

Aquí está la prueba: enter image description here

Probablemente esté llamando a la función router.navigate dentro de un evento de clic.

  

Y la función de guardar es algo así como

 save() { //Do stuff this._router.navigate(['/users', { id: userId } ]); } 

Esto funciona en los navegadores IE11 y Edge, pero volvería a cargar la aplicación en Chrome.

Esto se debe a que falta un type en el elemento del botón, si el botón está dentro de un

Chrome usará ‘enviar’ como su valor predeterminado. Causar un envío de formulario cuando se hace clic en el botón.

Se prefiere establecer siempre un type cuando se utiliza el elemento del button Consulte aquí:

Entonces cambiando el HTML a

  

Hará que funcione en los 3 navegadores.

Mi solución anterior también funciona, (devolviendo falso evitaría la acción predeterminada, también enviando el formulario), pero creo que el anterior es el preferido.

Respuesta obsoleta pero guardada para la posteridad:

  

Tuve el mismo efecto (actualización de página cuando navego a la página de detalles) usando un simple enlace. La solución fue usar el enlace angular:

Para mí funciona bien (del código del componente):

 window.location.href = "/sth"; 

recarga automáticamente la página a la parte de url dada.

Sé que es un método simple, pero también puede establecer este código para actualizar la ruta en caso de éxito una vez que finalice toda la operación.

window.open (‘usuarios’, ‘_self’);

Se volverá a cargar y redirigir a la página del usuario.

Esto cubre una situación híbrida AngularJS / Angular. Estoy agregando la respuesta porque esta pregunta es uno de los mejores resultados cuando Google google problemas de recarga de la página del enrutador. Con suerte, le ahorrará tiempo a alguien más.

En mi caso, tenía una configuración de ruta muy sencilla de Angular 2 (en realidad 5) que funcionaba principalmente, excepto en un caso en el que un enlace de una ruta a otra causaba inexplicablemente una recarga de página. Revisé todos los sospechosos habituales, formulario, botón de envío, etc.

Resultó que en algún lugar de un componente AngularJS que se mostraba en el momento en que se hizo clic en el enlace, había un ng-include . La documentación advierte sobre esto por una razón, supongo. Se volvió a barajar la plantilla para que ng-include pudiera cambiar a una templateUrl y todo estaba bien.