У меня проблема с переходом к компоненту, определенному в модуле отложенной загрузки.
Компонент ListComponent
определен по пути «test» (my-routing.module.ts — модуль отложенной загрузки). Всякий раз, когда я нажимаю кнопку «Тест» (test.comComponent.html), я получаю исключение:
NG04002: Невозможно сопоставить ни один маршрут. Сегмент URL: «тест».
Почему?
Мое приложение-routing.module.ts выглядит так:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { AboutComponent } from './components/about/about.component';
import { DashboardComponent } from './components/dashboard/dashboard.component';
import { AuthGuard } from './auth.gard';
import { ListComponent } from './list.component';
import { TestComponent } from './test/test.component';
const myModule = () => import('./my-routing/my-.module').then(x => x.MyRoutingModule);
const routes: Routes = [
{ path: '', component: TestComponent },
{ path: 'experiment', loadChildren: myModule },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Мой my-routing.module.ts:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ListComponent } from '../list.component';
import { TestComponent } from '../test/test.component';
const routes: Routes = [
{ path: 'test', component: ListComponent },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MyRoutingModule { }
Мой test.comComponent.html выглядит так:
<div class = "container">
<div class = "row">
<div class = "col-1">
<a [routerLink] = "['test']"><button type = "button" class = "btn btn-primary">
Test</button></a>
</div>
</div>
</div>
Если вы прочитаете свой app.routing.ts,
{ path: 'experiment', loadChildren: myModule },
Все маршруты в MyRoutingModule
начинаются с пути: «experiment/».
Следовательно, измените путь «тест» на «эксперимент/тест».
<a [routerLink] = "['experiment/test']">
<button type = "button" class = "btn btn-primary">
Test
</button>
</a>
Обратите внимание, что вы можете применить атрибут [routerLink]
к элементу <button>
без использования элемента <a>
.
<button type = "button" class = "btn btn-primary" [routerLink] = "['experiment/test']">
Test
</button>
Ваша проблема решена? Какой путь URL-адреса имеет указанную ошибку?
Оно работает. Моя глупая ошибка с импортом my-routing.module.ts. Все хорошо. Большое спасибо
Не знаю, что я делаю не так, но у меня все еще получается
NG04002: Cannot match any routes. URL Segment
. Я вижу, что ваше приложение на Stack Blitz работает отлично.