AngularでModuleを遅延読み込み(Lazy Loading)する方法

AngularでModuleを遅延読み込み(Lazy Loading)する方法

2018年11月15日
スポンサーリンク

AngularでModuleを遅延読み込み(Lazy Loading)する方法をご紹介します。

プロジェクトの作成

下記のコマンドでプロジェクトを作成します。

ng new lazyload-sample --routing

遅延読み込みするModuleの作成

遅延読み込みする`LazyModule`と`LazyComponent`を作成します。

LazyModule

ng g m lazy --routing

LazyComponent

ng g c lazy

Routingの設定

`/lazy`に遷移した時に`LazyModule`を読み込んで`LazyComponent`を表示するように設定します。

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  {path: 'lazy', loadChildren: './lazy/lazy.module#LazyModule'}
];

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

lazy-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LazyComponent } from './lazy.component';

const routes: Routes = [
  {path: '', component: LazyComponent}
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class LazyRoutingModule { }

これで`/lazy`に遷移した時、`LazyModule`が読み込まれて`LazyComponent`が表示されるようになりました。

遷移用のリンクを追加

`app.component.html`に`/lazy`に遷移するためのリンクを追加します。

app.component.html

Navigate to Lazy

ブラウザで確認

下記のコマンドを実行してブラウザで確認してみましょう。

ng serve


`Navigate to Lazy`をクリックすると

`lazy-lazy-module.js`が読み込まれて`LazyComponent`が表示されました。

参考

Angular – Lazy Loading Feature Modules