Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

285
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!