1. ホーム
  2. angular

[解決済み] Angularで、「pathmatch: full」とは何か、どんな効果があるのか?

2022-05-12 17:05:50

質問

ここではパスマッチをフルに使っていますが、このパスマッチを削除すると、アプリをロードしたり、プロジェクトを実行することさえできなくなります。

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';

import { AppComponent }  from './app.component';
import { WelcomeComponent } from './home/welcome.component';

/* Feature Modules */
import { ProductModule } from './products/product.module';

@NgModule({
  imports: [
    BrowserModule,
    HttpModule,
    RouterModule.forRoot([
      { path: 'welcome', component: WelcomeComponent },
      { path: '', redirectTo: 'welcome', pathMatch: 'full' },
      { path: '**', redirectTo: 'welcome', pathMatch: 'full' }
    ]),
    ProductModule
  ],
  declarations: [
    AppComponent,
    WelcomeComponent
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

解決方法は?

RouterModule.forRoot([
      { path: 'welcome', component: WelcomeComponent },
      { path: '', redirectTo: 'welcome', pathMatch: 'full' },
      { path: '**', component: 'pageNotFoundComponent' }
    ])

ケース1 pathMatch:'full' : この場合、アプリを起動する際に localhost:4200 (または何らかのサーバー)のデフォルトページはウェルカムスクリーンになります。 https://localhost:4200/

もし https://localhost:4200/gibberish にリダイレクトされます。 ページNotFound 画面は path:'**' ワイルドカード

ケース2 pathMatch:'prefix' :

もしルートが { path: '', redirectTo: 'welcome', pathMatch: 'prefix' } というのは、すべてのurlが一致するからです。 path:'' が定義されています。