Angular 4.1.1
を使用してアプリケーションを開発しているときに、私はいくつかの興味深い状況に出会った。私はいつもモジュールでルーティングを宣言しており、すべてのモジュールでそれを行います。例えばアプリケーションルーティングがモジュールルーティングをオーバーライドする
、new-cars.routing.module.ts
:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { NewCarsComponent} from './new-cars.component';
import { NewCarsResolver } from './new-cars.resolver';
@NgModule({
imports: [
RouterModule.forChild([
{
path: 'cars/:id',
component: NewCarsComponent,
resolve: {
card: NewCarsResolver
}
}
])
],
exports: [RouterModule]
})
export class NewCarsRoutingModule { }
それから私は、ユーザーの入力はURLアドレスをexisitingない場合は、 "404見つかりません" コンポーネントにリダイレクトするように、このarticleを読みました。
を、今、すべてのページがPage not found
を示しています。そして、私はapp-routing.module.ts
でこのルートを宣言しました。
app.module.ts:
import ...;
import { NewCarsModule } from './new-cars/new-cars.module';
import ...;
@NgModule({
imports: [
RouterModule,
BrowserModule,
AppRoutingModule,
HomeModule,
SearchModule,
CoreModule,
NewsCarsModule,
],
declarations: [
AppComponent,
PageNotFoundComponent
],
bootstrap: [AppComponent]
})
export class AppModule { }
私の質問はそれがないすべてのコンポーネントには、ただ一つの場所に{ path: '**', component: PageNotFoundComponent }
を書くことは可能ですか?
も参照してください。ワイルドカード(404)ルートは、他のすべてのルートがインポートされた後、ルートリストの* last *ルートである必要があります。 – Claies
@Claies私は 'const appRoutes:Routes = [...]'でルートを宣言しませんが、**モジュール**でルートを宣言します。したがって、アプリケーションルートはモジュールルートをオーバーライドします。 'Angular'はルーティングのために' app-routing.module.ts'ファイルを見て、次に 'new-cars.routing.module.ts'のようなモジュールを見て移動します。 – StepUp
AppModuleを追加できますか? – yurzui