Я думаю, что вы только что сопоставили router-outlet
с неверным компонентом - пожалуйста, проверьте, что
Я пробовал ваш тот же сценарий в stackblitz , пожалуйста, посмотрите
app.component.html
<form class="form-inline my-2 my-lg-0">
<button class="btn btn-secondary my-2 my-sm-0" type="submit" routerLink="/user/login">Login</button>
<button class="btn btn-secondary my-2 my-sm-0" type="submit" routerLink="/user/register">Register</button>
</form>
<router-outlet></router-outlet>
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { RouterModule, Routes} from '@angular/router';
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
const routes: Routes = [
{
path:'welcome',
component:HelloComponent
},
{
path:'user',
loadChildren:'./modules/lazy/lazy.module#LazyModule'
},
{
path: '',
redirectTo: 'welcome',
pathMatch: 'full'
}
];
@NgModule({
imports: [ BrowserModule, FormsModule, RouterModule.forRoot(routes) ],
declarations: [ AppComponent, HelloComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Все работает, как и ожидалось - пожалуйста, посмотрите нассылка выше - надеюсь, это поможет вам - Счастливое кодирование:)
Обновление
Наконец, потребовалось много времени, чтобы найти и решить проблему - но проблема, похоже,быть достаточно маленьким, чтобы съесть наше время :) - Да, проблема заключалась в теге button
с типом submit
, который слишком заключен в тег form
- Это вызывает проблему и заставляет страницу перезагружаться, поскольку предполагается, чтоформа была отправлена, и приложение отображает component
назад
Итак, первое исправление в вашем header.component.html
либо удалите тег form
, либо измените тип button
на type="button"
, если не изменитеэто к тегу anchor
<form class="form-inline my-2 my-lg-0">
<button class="btn btn-secondary my-2 my-sm-0" type="button" [routerLink]="['user']">Login</button>
<button class="btn btn-secondary my-2 my-sm-0" type="button" routerLink="/user/register">Register</button>
</form>
Это решит вашу проблему полностью - остальное исправлениянужно сделать исходя из вашего удобства
app-routing.module.ts
Не загружайте здесь, ваш загрузчик должен быть только на app.module
, поэтомуВаша маршрутизация @NgModule()
должна быть такой:
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule { }
user-routing.module.ts
Вам необходимо экспортировать RouteModule
и прочитать его с вашегоLazyModule
так что ваша маршрутизация @NgModule()
должна быть такой
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [RouterModule]
})
export class UserRoutingModule { }
Это все, что нужно, чтобы все исправить, и ваш код работает отлично - просто не стесняйтесь делиться своими проблемами - ура! Happy coding:)