我正在尝试为角度组件设置默认子路由,但我似乎无法使用以下任一方法。我出错的任何想法?
RouterModule.forRoot([
{ path: 'signin', component: SignInComponent, canActivate: [UnauthGuard] },
{ path: '', component: MainComponent, canActivate: [AuthGuard] },
]);
RouterModule.forChild([{
path: '',
component: MainComponent,
children: [
{ path: 'dashboard', component: DashboardComponent },
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
// { path: '', component: DashboardComponent },
]
}]);
答案 0 :(得分:1)
问题是您的基本href路由无法在任何地方加载forChild路由。将孩子加载到路线有几种不同的方法,但这是我的标准:
在您的基本应用 routing.module.ts 中,导入包含您的子路由的子模块。
import { ChildModule } from './child/child.module';
对于生产构建,我为AOT编译添加了一个简单的导出函数:
export function loadChildModule() {
return ChildModule;
}
并且您的@NgModule
应声明子路线,如:
{ path: 'dashboard', loadChildren: loadChildModoule },
{ path: '', component: MainComponent }
您的 child / child.module.ts 需要从 child / child-routing.modules.ts 导入路线。
child.module将包含:
import { ChildRoutingModule } from './child-routing.module';
...
*NgModule({
imports: [
CommonModule,
ChildRoutingModule
]
...
和你的child-routing.module:
import { DashboardComponent } from './dashboard/dashboard.component';
import { ChildComponent2 } from './child2/child2.component';
import { ChildComponent3 } from './child3/child3.component';
const routes: Routes = [
{ path: 'child2', component: ChildComponent2 },
{ path: 'child3', component: ChildComponent3 },
{ path: 'dashboard', component: DashboardComponent },
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class ChildRoutingModule { }
您可以将子项添加到子模块,就像将它们添加到主应用程序RoutingModule
一样。另请注意,您可以使用与问题中发布的.forChild路线类似的设置。唯一的区别是你必须使用至少一个命名路线(例如你的主要组件将有路径:' home'并且应该有一个重定向到路径:'' to redirectTo:' home')在每个.forChild
。
答案 1 :(得分:0)
在父组件上写:<router-outlet></router-outlet>
。
在这种情况下写在MainComponent上。