代码之家  ›  专栏  ›  技术社区  ›  Stepan Suvorov bolelamx

如何获得加载角度Lazymodle文件的进度?

  •  -1
  • Stepan Suvorov bolelamx  · 技术社区  · 7 年前

    我正在尝试找出如何在加载角度为Lazyload的模块时做出进度指示。

    我可以更改预加载策略,但是是否有一个钩子可以订阅加载进度?

    export class mypreloadingstrategy implements preloadingstrategy{
    预载(路由:路由,负载:功能):可观测{
    返回(true).pipe(flatmap(u=>load());
    }
    }
    

    是否可以订阅loadleast to know when it was loaded?

    我可以更改预加载策略,但是是否有一个钩子可以订阅加载进度?

    export class MyPreloadingStrategy implements PreloadingStrategy {
        preload(route: Route, load: Function): Observable<any> {
            return of(true).pipe(flatMap(_ => load()));
        }
    }
    

    可以订阅吗load至少知道什么时候装的?

    0 回复  |  直到 7 年前
        1
  •  1
  •   yurzui    7 年前

    您可以订阅 Router.events https://angular.io/guide/router#router-events

    路由器配置启动

    在路由器延迟加载路由配置之前触发的事件。

    已配置路由

    延迟加载路由后触发的事件。

    假设你有以下懒惰的路线:

    {
      path: 'lazy', loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule)
    }
    

    下面是如何连接到这个模块的加载过程:

    import { RouteConfigLoadEnd, RouteConfigLoadStart, Router } from '@angular/router';
    
    ...
    constructor(private router: Router) {
      router.events.subscribe((
        event => {
          if (event instanceof RouteConfigLoadStart && event.route.path === 'lazy') {
            console.log('START');
          }
          if (event instanceof RouteConfigLoadEnd && event.route.path === 'lazy') {
            console.log('FINISH');
          }
        }));
    }