Tengo una función que cuando se carga el componente, devuelve datos específicos de un determinado parámetro (por ejemplo: /app/items) y los muestra en un globo de información, pero si accedo a una ruta secundaria (por ejemplo: /app/items/ create) o (ej: /app/items/1/view) Necesito hacer una validación para ver si hay datos informativos en esta ruta para mostrar, pero si no, necesito mostrar la información del parámetro anterior (ej. : /aplicación/elementos) . Logré crear esta función a continuación que cumple con esto, pero con una solicitud dentro de otra, que creo que no es la más adecuada. Así que estoy tratando de refactorizar para que solo se realice una solicitud que valide estos parámetros. También se debe considerar que si la ruta tiene números, debe filtrarse y devolver una matriz con solo las cadenas antes de realizar la combinación ('/'), como puede ver allí en el constructor. Soy nuevo en el área, así que estoy tratando de encontrar algunos antecedentes para refactorizar esta función.
public information: InformationList | any public isLoading:boolean = true error: any; showError: boolean = false public currentPageUrl = null; public output = null other: any; constructor( public screenInfoService: ScreenInfoService, public loaderService: LoaderService, public router: Router ) { this.currentPageUrl = this.router.url.split("/").filter((item: any) => { return isNaN(item) }) } load() { this.output = this.currentPageUrl.join("/"); let params = new HttpParams(); params = params.set('orderBy', 'id'); params = params.set('search', `path:${this.output}`); params = params.set('searchFields', `path:ilike`); params = params.set('searchJoin', 'and'); this.screenInfoService.getAll(params).subscribe( success => { if (success.length === 0) { let output2 = null output2 = this.currentPageUrl.slice(0,2).join("/"); params = params.set('orderBy', 'id'); params = params.set('search', `path:${output2}`); params = params.set('searchFields', `path:ilike`); params = params.set('searchJoin', 'and'); this.screenInfoService.getAll(params).subscribe( success => { this.information = success }, error => { this.error = 'MSG.T224'; this.showError = true; } ) } else { this.information = success } }, error => { this.error = 'MSG.T224'; this.showError = true; }); } ngOnInit(): void { this.load()}