web-dave / Angular-Essentials-Training

9 stars 0 forks source link

PreloadingStrategy #20

Open web-dave opened 6 years ago

web-dave commented 6 years ago
web-dave commented 6 years ago

generate

  ng g class shared/preload-delayed
web-dave commented 6 years ago

app.module.ts


  providers: [PreloadDelayed],
web-dave commented 6 years ago

preloadDelayed.class.ts


import { PreloadingStrategy, Route } from '@angular/router';
import { Observable, of } from 'rxjs';
import { delay, flatMap } from 'rxjs/operators';

export class PreloadDelayed implements PreloadingStrategy {

  preload(route: Route, fn: () => Observable<any>): Observable<any> {

    if (route.data !== undefined) {
      if (route.data.preload) {
        return of(true).pipe(delay(3000),
        flatMap(() => fn()));
      }

    } else {
        return fn();
    }
  }

}
web-dave commented 6 years ago

app-routing.module.ts


   {
    path: 'books',
    loadChildren: () => import('./books/books.module').then(m => m.BooksModule),
    data: {
      preload: true
    }
  }
web-dave commented 6 years ago

app-routing.module.ts



@NgModule({
  imports: [RouterModule.forRoot(routes, {preloadingStrategy: PreloadDelayed})],
  exports: [RouterModule]
})
export class AppRoutingModule { }