Детская маршрутизация не работает и приложение перенаправляет на страницу 404 - PullRequest
0 голосов
/ 10 декабря 2018

Я создал угловое приложение версии 7 и структура проекта выглядит следующим образом.Модуль app имеет app-routing.module.ts, а модуль dashboard имеет модуль dashboard-routing module.ts.В модуле панели мониторинга маршрут компонента макета имеет дочерние компоненты, а именно home и admin.

Вот мой код:

AppModule

import { AppRoutingModule } from './app-routing.module';
import { DashboardModule } from './dashboard/dashboard.module';

import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';


@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    PageNotFoundComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    DashboardModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Модуль маршрутизации приложений:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';

const routes: Routes = [
  { path: 'login', component: LoginComponent },
  { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
  { path: '**', component: PageNotFoundComponent }
];

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

файл модуля приборной панели:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LayoutComponent } from './layout/layout.component';
import { HomeComponent } from './home/home.component';
import { AdminComponent } from './admin/admin.component';
import { DashboardRoutingModule } from './dashboard-routing.module';

@NgModule({
  declarations: [LayoutComponent, HomeComponent, AdminComponent],
  imports: [
    CommonModule,
    DashboardRoutingModule
  ]
})
export class DashboardModule { }

модуль приборной панели-маршрутизации.

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Routes, RouterModule } from '@angular/router';

import { LayoutComponent } from './layout/layout.component';
import { HomeComponent } from './home/home.component';
import { AdminComponent } from './admin/admin.component';


const dashboardRoutes: Routes = [
  {
    path: 'dashboard',
    component: LayoutComponent,
    children: [
      { path: '', redirectTo: 'home', pathMatch: 'full' },
      { path: 'home', component: HomeComponent },
      { path: 'admin', component: AdminComponent}
    ]
  }
];

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    RouterModule.forChild(dashboardRoutes)
  ],
  exports: [RouterModule]
})
export class DashboardRoutingModule { }

Проблема заключается вЯ хочу направить маршрут к макету на локальном хосте: 4200, но он всегда собирается на маршрут компонента pageNotFound на каждом маршруте.Может кто-нибудь указать, в чем проблема.

Код на StackBlitz:

https://stackblitz.com/github/Ahsan9981/authGuardApp

Желаемый вывод enter image description here

1 Ответ

0 голосов
/ 10 декабря 2018

Маршрутизатор будет соответствовать вашим маршрутам в той последовательности, в которую вы их импортировали, поэтому, если вы добавите подстановочный знак / **, чтобы соответствовать всем маршрутам в начале вашего appModule, он будет соответствовать этому маршруту перед проверкой, если какой-либо из ваших другихмаршруты соответствуют ему.

Для расширения на примере - Маршрутизатор будет проходить по всем определенным маршрутам, пока не найдет совпадение, если вы начнете с перехвата всех, он остановится и не пойдет дальше.Поэтому будет проблемой определить перехват всех в начале вашего модуля (appRoutes).

Ваш модуль панели мониторинга импортирует маршруты вашей панели мониторинга, поэтому импорт модуля панели мониторинга в модуле приложения определит, когда ваши маршруты панели мониторинга будутимпортирован.

Вам необходимо импортировать маршруты в последовательности, которая, по вашему мнению, будет совпадать, и оставить символы подстановки для добавления в конце.Это всегда должен быть запасной вариант с подстановочными знаками.

В документации есть замечательный раздел для маршрутизация .

Если все еще что-то неясно, не стесняйтеськомментарий, и я обновлю свой ответ соответственно.

С уважением, Крис

...