SOですでにカバーされているこの状況を見つけることができないとは信じられません:(各単一ルートの有無にかかわらず追加のパラメーターを持つ例を見つけましたが、それは受け入れられません)
ので、私は持っています
RouterModule.forRoot([
{
path: 'home',
component: HomeComponent
},
{
path: 'news',
component: NewsComponent
},
{
path: 'newsDetail/:id',
component: NewsDetailComponent
},
...
})
したがって、URLの例は次のようになります。
http://somewhere.com/home
http://somewhere.com/news
http://somewhere.com/newsDetail/10
これらの各URLにオプションのパラメーターを追加して、URLで直接別のローカリゼーションを明示的に呼び出すことができる場合はどうなりますか(パーマリンクの場合)。
http://somewhere.com/home/en
http://somewhere.com/news/en
http://somewhere.com/newsDetail/10/en
したがって、最後に「/ en」がある場合とない場合で機能するはずです。もちろん、すべてのルート(オプションの/:languageを使用した同じルート)に追加することは答えではありません(数十のページが関係していると想像してください。それらの多くはすでに独自のパラメータ)
言語パラメーターを最初にしたい場合は、次のようにすることができます。最初に、空のアプリまたは任意のルートコンポーネントを宣言し、ブートストラップでAppComponent
:の代わりにこれを使用する必要があります。
@Component({
selector: 'app-root',
template: `<router-outlet></router-outlet>`
})
export class RootComponent {}
次に、現在のルートからモジュールを作成します(まだ作成していない場合)。それを呼び出しますAppRoutingModule
。
export const AppRoutes: Routes = [
{ path: 'home', component: HomeComponent },
{ path: 'news', component: NewsComponent },
{ path: 'newsDetail/:id', component: NewsDetailComponent }
];
@NgModule({
imports: [RouterModule.forFeature(AppRoutes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
次に、を作成しますRootRoutingModule
。これは魔法を実行します。
export const RootRoutes: Routes = [
{ path: '', loadChildren: () => import('./app.module').then((m) => m.AppModule) },
{ path: 'en', loadChildren: () => import('./app.module').then((m) => m.AppModule) }
];
@NgModule({
imports: [RouterModule.forRoot(AppRoutes)],
exports: [RouterModule],
})
export class RootRoutingModule {}
これに関する問題は、:language
パラメータが機能するとは思わないため、サポートする可能性のあるすべての言語をハードコーディングする必要があることです。
したがって、基本的に、言語ルーティングとブートストラップを実行するルートモジュールを作成します
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加