Tengo problemas para borrar los parámetros de URL durante la navegación en Angular 2.4.2. Intenté adjuntar todas las opciones para borrar los parámetros en la línea de navegación a continuación, o cualquier combinación con navegar o navegar por URL, pero no puedo encontrar la manera de lograrlo.
this.router.navigateByUrl(this.router.url, { queryParams: {}, preserveQueryParams: false }); Como ejemplo, estoy en la ruta /section1/page1?key1=abc&key2=def y quiero permanecer en la misma ruta pero eliminar todos los parámetros de URL, por lo que el resultado final debería ser /section/page1
Como señaló DeborahK, cuando navegaba a this.router.url, esa URL ya tenía los parámetros de URL incrustados. Para resolverlo, eliminé los parámetros de la URL como una cadena y luego usé navegarByUrl para saltar allí.
let url: string = this.router.url.substring(0, this.router.url.indexOf("?")); this.router.navigateByUrl(url);El uso de navigateByUrl eliminará los parámetros de consulta si le pasa una URL sin los parámetros de consulta.
O podrías probar:
this.router.navigate(this.router.url, { queryParams: {}}); NOTA: navigate y no navigateByUrl
¿Eso funciona?
Si no desea volver a cargar la página, también puede usar Location
import { Location } from '@angular/common'; [...] this.location.replaceState(this.location.path().split('?')[0], ''); this.location.path() le proporciona la ruta actual. Puede eliminar los parámetros restableciendo la ruta de la página con todo en la URL antes del ? .