Quiero mostrar/ocultar una ruta basada en una llamada API (promesa devuelta). Si agrego un condicional basado en el valor prometido como se muestra a continuación, la ruta se muestra/oculta correctamente cuando visito la URL a través de la navegación.
Sin embargo, cuando presiono Actualizar en la URL, aparece un error 404. Soy completamente nuevo en Angular, JS y promesas, por lo que no puedo entender qué está pasando exactamente aquí o cómo se resuelve esto.
let toggle: boolean = await fetch("/pageToggle") .then(response => response.json()) .then(response => parseInt(response) === 1) .catch(() => false); if (toggle) { $stateProvider.state('maintenance.correspondence', { url: '/correspondence', data: { title: 'Correspondence', header: { heading: 'Correspondence', subheading: 'Correspondence' } }, template: '<correspondence></correspondence>', controller: ($scope: IScope) => { }, onExit: (BreadCrumbs: BreadCrumbs) => { BreadCrumbs.reset(); }, onEnter: (BreadCrumbs: BreadCrumbs, $stateParams: IStateParamsService) => { BreadCrumbs.add("Correspondence", "Correspondence", null, "maintenance.correspondence"); } } ); }Otro punto a aclarar es que solo heredé este código de otro desarrollador, y lo único que intento hacer es solucionar el problema con la redirección.
Las URL parecen usar el modo HTML5. Las URL son como https://localhost:3000/#/maintenance/correspondence/
Edición 4/11/2021 :
He hecho algunos progresos con esto. Lo que he observado es que el 404 solo ocurre cuando hago un resultado condicional (basado en la promesa) en todo el estado. Independientemente del resultado de la promesa booleana, Angular no puede resolver la ruta.
Si elimino el condicional, no obtengo el 404, pero necesito una forma de no mostrar condicionalmente la ruta según sea necesario.
He estado mirando el método resolve{} para ver si puedo hacer la llamada a la API allí, pero no estoy seguro de cómo o dónde agregar el condicional para el estado según la promesa. Así que creo que esto ahora es esencialmente trabajar con los proveedores estatales de AngularJS para hacer lo que necesito, si entiendo bien.
¿Puede alguien por favor ayudarme a implementar esto?
Editar - 11/5/2021 He estado probando algunas cosas, pero sigo con esto. ¿Puede ayudarme alguien, por favor?