1

私のapp.routesには4つのルートがあります。角度:PathLocationStrategyを使用するルートもあれば、HashLocationStrategyを使用するルートもあります。

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

export const pageRoutes: Routes = [ 
    {path: '', redirectTo: 'home', pathMatch: 'full'}, 
    {path: 'home', component: HomeComponent}, 
    {path: 'transaction', loadChildren: './app/transaction.module#TransactionModule'}, 
    {path: 'evidence', loadChildren: './app/evidence.module#EvidenceModule'} 
]; 

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

app.routesでは、私はLocationStrategyの具体的な設定を行いませんでした。 transactionルートでは、angle2のデフォルトのPathLocationStrategyを使用したいので、ユーザーはページを更新できません。

しかし、evidenceルートの場合、私は実際にユーザーがページを更新できるようにしたいと考えています。ですから、ここではHashLocationStrategyを使いたいと思います。

これは私がHashLocationStrategyを有効にしてのみ、このルートに適用するevidence-routing.moduleproviders: [{ provide: LocationStrategy, useClass: HashLocationStrategy }]を追加したいevidence-routing.module

@NgModule({ 

      imports: [RouterModule.forChild([ 
      {path:':sessionId', component: EvidenceComponent} 
      { path: '**', redirectTo: '/404' }, 
      { path: '404', component: PageNotFoundComponent} 
      ])], 
      exports: [RouterModule], 
      providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}] 

    }) 
    export class EvidenceRoutingModule {} 

です。

しかし、一度それを置くと、アプリケーション全体がHashLocationStrategyを採用し、トランザクションルートにも機能します。

私はこれを処理するための良い解決策を見つけることができませんでした。

この問題に関するアドバイスはありますか?

多くのありがとうございます!

答えて

2

異なるルートに異なるLocationStrategyを使用することはできません。この設定は、ルートではなくRouterであり、1つのアプリケーションに対して1つのルータしか存在できません。

サーバが正しく設定されていることを確認してから、すべてのルートに対してリロードが動作します(PathLocationStrategyでも)。

サーバーがHTML5 pushStateをサポートするように設定されていることを確認してください。
これは、サーバーが未知のリソースへの要求に対してindex.htmlを返すことを意味します。

関連する問題