簡體   English   中英

Angular 8 - 無法匹配任何路由。 URL 段:'javascript:void(0)'

[英]Angular 8 - Cannot match any routes. URL Segment: 'javascript : void(0)'

我有一個 angular 8 應用程序,其中我使用外部依賴項在我的應用程序中生成分頁表。 我只需要將 json 數據傳遞給它,它就會為我執行 rest。

因此分頁表生成下一頁和上一頁的鏈接。 如果我 hover 它將顯示localhost:4200/javascript: void(0) 據我所知,我的應用程序應該忽略此超鏈接,因為底層腳本必須為此具有 onClick function。

但我仍然低於錯誤。

ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'javascript%20:%20void%280%29'
Error: Cannot match any routes. URL Segment: 'javascript%20:%20void%280%29'
    at ApplyRedirects.push../node_modules/@angular/router/fesm5/router.js.ApplyRedirects.noMatchError (router.js:2459)
    at CatchSubscriber.selector (router.js:2440)
    at CatchSubscriber.push../node_modules/rxjs/_esm5/internal/operators/catchError.js.CatchSubscriber.error (catchError.js:34)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:79)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:59)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:79)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:59)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:79)
    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.error (Subscriber.js:59)
    at ThrowIfEmptySubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._error (Subscriber.js:79)
    at resolvePromise (zone.js:852)
    at resolvePromise (zone.js:809)
    at zone.js:913
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Object.onInvokeTask (core.js:26247)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:422)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:195)
    at drainMicroTaskQueue (zone.js:601)
    at ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:502)
    at invokeTask (zone.js:1693)

下面是我的app-routing.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';


const routes: Routes = [
  {
    path: HEALTH,
    pathMatch: FULL,
    loadChildren: './health/health.module#HealthModule'
  },
  {
    path: EMPTY_STRING,
    resolve: {
      LoggedInDetail: LoggedInDetailResolve
   },
    component: FullPageLayoutComponent,
    children: [
      {
        path: '',
        redirectTo: 'index',
        pathMatch: 'full'
      }
    ]
  },
  {
    path: EMPTY_STRING,
    component: AppComponent,
    children: [
      {
        path: TEMPLATE_ROUTE,
        component: TemplateComponent
      }
    ]
  }

];

@NgModule({
imports: [RouterModule.forRoot(routes, { useHash: true })],
exports: [RouterModule],
  providers: [LoggedInDetailResolve]
})
export class AppRoutingModule { }

請注意,我使用的是基於 hash 的 URL

imports: [RouterModule.forRoot(routes, { useHash: true })],

請從您的代碼中刪除pathMatch: FULL

或者你可以使用pathMatch: 'prefix'

pathMatch:'full':在這種情況下,當應用程序在 localhost:4200(或某些服務器)上啟動時,默認頁面將是歡迎屏幕,因為 url 將是 https://localhost:4200/

如果 https://localhost:4200/surendra 這將重定向到 pageNotFound 屏幕,因為路徑:'**' 通配符

pathMatch:'prefix':如果路由有 { path: '', redirectTo: 'initial', pathMatch: 'prefix' },現在這將永遠不會到達通配符路由,因為每個 url 都會匹配 path:'' 定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM