Angular 7 прямая маршрутизация URL не работает с идентификатором - PullRequest
0 голосов
/ 12 февраля 2020

Если я нажимаю на навигационную ссылку, у меня есть код при нажатии кнопки, он отлично работает

this.router.navigate(['/dashboard', this.selectedDateString]);

однако, когда я вручную набираю URL в адресную строку, как показано ниже

http://myapp/dashboard/01152020

Я получаю сообщение

запрещено!

. Почему маршрутизация работает из приложения, а не из прямой адресной строки?

Вот мой модуль маршрутизации

const appRoutes: Routes = [
  { path: 'dashboard/:date', component: DashboardComponent },
  { path: 'dashboard', component: DashboardComponent },     
  { path: '',   redirectTo: '/dashboard', pathMatch: 'full' },
  { path: '**', component: PageNotFoundComponent }
];

@NgModule({
  imports: [
    RouterModule.forRoot(
      appRoutes, { onSameUrlNavigation: 'reload' }
    )
  ],
  exports: [
    RouterModule
  ]
})
export class AppRoutingModule {}

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Я согласен с @ TheHeadRu sh.

Похоже, у вас не настроен сервер для обработки маршрутов внешнего интерфейса путем возврата базового документа с этих конечных точек.

Если вы не хотите, чтобы сервер обрабатывал это, вы можете указать Angular использовать HashLocationStrategy , который будет использовать фрагменты ha sh для перехода к страницам.

Таким образом, вместо http://myapp/dashboard/01152020 ваш URL будет выглядеть в браузере следующим образом http://myapp#/dashboard/01152020

Вы предоставите его в своем root модуле приложения следующим образом.

@NgModule({
  imports: [
    BrowserModule,
    MyFeatureModule,
  ],
  providers: [
    {
      provide: LocationStrategy, useClass: HashLocationStrategy,
    },
  ]
})
export class AppModule {}
0 голосов
/ 12 февраля 2020

Попробуйте протестировать его из html, используя тег <a> и ссылку на маршрутизатор, как это

      <a [routerLink] = "['dashboard', selectedDateString]" href="javascript:;"></a>
...