web-dave / angular-starter-v2

6 stars 3 forks source link

PreloadingStrategy #17

Open web-dave opened 7 years ago

web-dave commented 7 years ago
web-dave commented 7 years ago

generate

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

app.module.ts


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

preloadDelayed.class.ts


import { PreloadingStrategy, Route } from '@angular/router';
import { Observable } from 'rxjs';

export class PreloadDelayed implements PreloadingStrategy {

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

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

    } else {
        return fn();
    }
  }

}
web-dave commented 7 years ago

app-routing.module.ts


   {
    path: 'books',
    loadChildren: './books/books.module#BooksModule',
    data: {
      preload: true
    }
  },
web-dave commented 7 years ago

app-routing.module.ts



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