Подтвердить что ты не робот

В Angular, What is 'pathmatch: full' и какой эффект он имеет?

Здесь здесь используется pathmatch как полная, и когда я удаляю этот путь, он даже не загружает приложение или не запускает проект

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 { }
4b9b3361

Ответ 1

  pathMatch = 'full' приводит к попаданию маршрута, когда оставшиеся несопоставленные сегменты URL-адреса соответствуют пути префикса

pathMatch = 'prefix' указывает маршрутизатору сопоставить маршрут перенаправления, когда оставшийся URL-адрес начинается с пути префикса маршрута перенаправления.

Ссылка: https://angular.io/guide/router#set-up-redirects

pathMatch: 'full' означает, что весь URL-путь должен совпадать и используется алгоритмом сопоставления маршрутов.

pathMatch: 'prefix' означает, что выбран первый маршрут, где путь соответствует началу URL-адреса, но затем алгоритм сопоставления маршрутов продолжает поиск совпадающих дочерних маршрутов, где совпадает остальная часть URL-адреса.

Ответ 2

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

Случай 1 pathMatch:'full': в этом случае, когда приложение запускается на localhost:4200 (или на каком-либо сервере), страницей по умолчанию будет экран приветствия, поскольку URL будет https://localhost:4200/

Если https://localhost:4200/gibberish он будет перенаправлен на экран pageNotFound из-за подстановочного знака path:'**'

Случай 2 pathMatch:'prefix':

Если у маршрутов есть { path: '', redirectTo: 'welcome', pathMatch: 'prefix' }, теперь это никогда не достигнет подстановочного маршрута, поскольку каждый URL будет соответствовать path:'' определен.