Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

288
Vistas
Mostrar indicador de actividad al cargar un módulo con carga diferida en Angular 2

Mi escenario es el siguiente. Tengo un menú, con múltiples opciones. Cada menú debe mostrarse según los permisos del usuario (ya resuelto), la mayoría de los elementos del menú están encapsulados como módulos y la mayoría de los módulos tienen carga diferida, por lo que cuando un usuario hace clic en un elemento del menú por primera vez, se carga (hasta aquí todo funciona bien), ahora mi requisito es, para brindar una mejor experiencia al usuario, necesito mostrar el indicador de actividad después de que el usuario haga clic en un elemento del menú mientras se carga el módulo de carga diferida.

Hasta ahora, intenté usar las interfaces canActive, canLoad, canActivateChild de Angular Router pero sin suerte.

¿Algunas ideas?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede escuchar dos eventos del enrutador:

  • RouteConfigLoadStart
  • RouteConfigLoadEnd

Se disparan cuando se está cargando un módulo con carga diferida. La ventaja de usarlos sobre los eventos de enrutador estándar, como NavigationStart , es que no se activarán en cada cambio de ruta.

Escúchelos en su AppComponent raíz para mostrar/ocultar su rueda giratoria.

aplicación.componente.ts

 import { Router, RouteConfigLoadStart, RouteConfigLoadEnd } from '@angular/router'; ... export class AppComponent implements OnInit { loadingRouteConfig: boolean; constructor (private router: Router) {} ngOnInit () { this.router.events.subscribe(event => { if (event instanceof RouteConfigLoadStart) { this.loadingRouteConfig = true; } else if (event instanceof RouteConfigLoadEnd) { this.loadingRouteConfig = false; } }); } }

aplicación.componente.html

Solo una cadena simple aquí, pero podría usar un componente giratorio.

 <router-outlet></router-outlet> <ng-container *ngIf="loadingRouteConfig">Loading route config...</ng-container>

Estoy usando este enfoque con Angular v4.2.3

about 4 years ago · Santiago Trujillo Denunciar

0

puedes hacerlo así

  1. en aplicación.componente.html
 <div class="main-loader" *ngIf="loading"> <div class="cssload-container" > <div class="cssload-whirlpool"></div> </div> </div>
  1. en app.component.ts

     import { Router, NavigationStart, NavigationEnd } from '@angular/router'; loading:boolean = false; constructor(private router:Router) { router.events.subscribe(event => { if(event instanceof NavigationStart) { this.loading = true; console.log("event started") }else if(event instanceof NavigationEnd) { this.loading = false; console.log("event end") } // NavigationEnd // NavigationCancel // NavigationError // RoutesRecognized }); }
  2. en css cualquier animación de carga

Espero que esto sea útil para ti. Gracias

about 4 years ago · Santiago Trujillo Denunciar

0

¡Puedes usar CSS!

 <routler-outlet></routler-outlet> <div class='.loader> Just, wait a sec ! I'm loading </div>

en tu plantilla

 router-outlet + .loader { opacity : 1; } .loader { opacity : 0; }

Entonces puedes crear elegantes spinners con HTML/CSS

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda