2016-09-26 10 views
2

遅延ロードモジュールを使用して '404ページ'の作業をできないようにしました。ブラウザにランダムなURLを入力すると、クールな404ページの代わりに空白のページしか表示されません。私はチャンクが遅延ロードされたものであり、それは、バケツのモジュールで構成された適切なコンポーネントを示して[OK]をthatsの参照/バケツにサーフィンするとき404ページとLazy Loading in Angular2

は、ここに私のルーティング設定

export const routes: Routes = [ 
    { path: '', redirectTo: 'dashboard', pathMatch: 'full'}, 
    { path: 'dashboard', loadChildren: 'app/dashboard/dashboard.module#DashboardModule'}, 
    { path: 'buckets', loadChildren: 'app/buckets/buckets.module#BucketsModule'}, 
    { path: '**', loadChildren: 'app/notfound/notfound.module#NotFoundModule'} 
]; 

export const routing: ModuleWithProviders = RouterModule.forRoot(routes); 

です。

しかし、404エラーページでは機能しません。パスのための通常は「**」は、他のすべてのルートには機能しませんが、そうではありません。

誰かが助けることができますか?

-angular2最終(2.0.0)

答えて

5

URLマッチングは習慣ワイルドカード遅延ロードされたモジュールと連携します。レイジーロードされたモジュール内のルーティングに何を追加するのだろうか。それはデフォルトをロードするよう

は、モジュールのルーティングで空のパスを与える可能性があり

{ path: 'notfound', loadChildren: 'app/notfound/notfound.module#NotFoundModule'} 
{ path: '**', redirectTo: '/notfound' } 

更新、あなたは以下のようなワイルドカードルートの異なるルートにリダイレクトしようとしていることを言ってコンポーネント

const notfoundRoutes: Routes = [ 
    { path: '', component: NotFoundComponent } 
]; 

このように設定されていないパスにルーティングすると、 ds NotFoundモジュールが遅延しています。

は、このことができます。このPlunker!!

希望を参照してください!!

+0

まだdoesntの仕事が、私の答え – webmaster

+0

@webmasterを参照してください。それが溶液中で更新さPlunkerをチェック動作しますが、私はルートが適切に構成されていないことを確認あなたが追加したソリューションでは、モジュールをインポートする必要があります。乾杯!! –

+0

マドゥーもやってましたが、私はこれで何時間も苦労していました。これは、私が見ることができる404エラーページをレイジーロードする唯一の方法です(これは正解とマークする必要があります) – Rodney

0

私がしたことは、以下の通りです。

私はAppModuleのルーティングにおける経路(ない遅延もの)

const routes: Routes = [ 
    { 
    path: 'notfound', 
    component: NotFoundComponent 
    } 
] 

私は

export const routes: Routes = [ 
    { path: '', redirectTo: 'dashboard', pathMatch: 'full'}, 
    { path: 'dashboard', loadChildren: 'app/dashboard/dashboard.module#DashboardModule'}, 
    { path: 'buckets', loadChildren: 'app/buckets/buckets.module#BucketsModule'}, 
    { path: '**', redirectTo: '/notfound' } 
]; 
を添加宣言NOTFOUNDモジュール内AppModule

@NgModule({ 
    imports: [ 
    BrowserModule, 
    HttpModule, 
    CoreModule.forRoot(), 
    NotFoundModule, 
    routing 
    ], 
    declarations: [ 
    AppComponent 
    ], 
    providers: [ ], 
    bootstrap: [AppComponent] 
}) 

にNOTFOUNDモジュールをインポート

この方法では、NotFoundモジュールは直接アプリケーションにインポートされるため、アプリケーションコンテキスト。

あなたが/ NOTFOUNDにルーティングさunexistentルートを入力してください毎回;)

+0

Hmm - これはすでに動作していましたが、404ページをLazyLoadingに移動しようとしています(これは1%のヒットのみになります)。私はそれをLazyの読み込みで動かすことができません... – Rodney

関連する問題