如何路由到 Angular2 中的子组件?
How to route to the child components in Angular2?
我正在尝试为项目进行基础设置。以下是我创建的文件:
app.component.html
<div class="jumbotron">
<div class="container">
<div class="col-sm-8 col-sm-offset-2">
<router-outlet></router-outlet>
</div>
</div>
</div>
下面是我在app.routes.ts文件
中的路由
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{
path: 'main',
component: MainComponent,
children: [
{
path: 'main/dashboard',component: DashboardComponent
},
{
path: 'main/user',component: UserComponent
},
{
path: 'main/reports',component: ReportsComponent
}
]
},
{ path: '**', redirectTo: 'main' }
];
main.component.html
<div id="wrapper">
<app-top-bar></app-top-bar>
<router-outlet></router-outlet>
</div>
topbar.component.html
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="navbar-header">
<a class="navbar-brand">My Admin</a>
</div>
<ul class="nav navbar-right top-nav">
<li>
<a [routerLink]="['/login']"><i class="fa fa-fw fa-user"></i> Logout</a>
</li>
</ul>
<app-side-bar></app-side-bar>
</nav>
sidebar.component.html
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li [routerLink]="['main/dashboard']" routerLinkActive="active">
<a><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
</li>
<li [routerLink]="['main/user']" routerLinkActive="active">
<a ><i class="fa fa-fw fa-bar-chart-o"></i> Users</a>
</li>
<li [routerLink]="['main/reports']" routerLinkActive="active">
<a><i class="fa fa-fw fa-table"></i> Reports</a>
</li>
</ul>
</div>
我能够登录并导航到主要组件页面,该页面包含顶部栏、侧边栏和内容部分,其中将显示侧边栏组件的内容,如仪表板、用户或报告。
但是,当我尝试单击边栏组件(仪表板、用户或报告)时,这些组件未显示在屏幕的右侧。我能得到什么帮助吗?
变化:
children: [
{
path: 'main/dashboard', component: DashboardComponent
},
{
path: 'main/user', component: UserComponent
},
{
path: 'main/reports', component: ReportsComponent
}
]
收件人:
children: [
{
path: 'dashboard', component: DashboardComponent
},
{
path: 'user', component: UserComponent
},
{
path: 'reports', component: ReportsComponent
}
]
否则你的路线需要看起来像 /main/main/dashboard 等才能命中。
您好,请从您的子路由配置中删除 main/:
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{
path: 'main',
component: MainComponent,
children: [
{
path: 'dashboard',component: DashboardComponent
},
{
path: 'user',component: UserComponent
},
{
path: 'reports',component: ReportsComponent
}
]
},
{ path: '**', redirectTo: 'main' }
];
您的其余代码没问题。
我正在尝试为项目进行基础设置。以下是我创建的文件:
app.component.html
<div class="jumbotron">
<div class="container">
<div class="col-sm-8 col-sm-offset-2">
<router-outlet></router-outlet>
</div>
</div>
</div>
下面是我在app.routes.ts文件
中的路由const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{
path: 'main',
component: MainComponent,
children: [
{
path: 'main/dashboard',component: DashboardComponent
},
{
path: 'main/user',component: UserComponent
},
{
path: 'main/reports',component: ReportsComponent
}
]
},
{ path: '**', redirectTo: 'main' }
];
main.component.html
<div id="wrapper">
<app-top-bar></app-top-bar>
<router-outlet></router-outlet>
</div>
topbar.component.html
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="navbar-header">
<a class="navbar-brand">My Admin</a>
</div>
<ul class="nav navbar-right top-nav">
<li>
<a [routerLink]="['/login']"><i class="fa fa-fw fa-user"></i> Logout</a>
</li>
</ul>
<app-side-bar></app-side-bar>
</nav>
sidebar.component.html
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li [routerLink]="['main/dashboard']" routerLinkActive="active">
<a><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
</li>
<li [routerLink]="['main/user']" routerLinkActive="active">
<a ><i class="fa fa-fw fa-bar-chart-o"></i> Users</a>
</li>
<li [routerLink]="['main/reports']" routerLinkActive="active">
<a><i class="fa fa-fw fa-table"></i> Reports</a>
</li>
</ul>
</div>
我能够登录并导航到主要组件页面,该页面包含顶部栏、侧边栏和内容部分,其中将显示侧边栏组件的内容,如仪表板、用户或报告。
但是,当我尝试单击边栏组件(仪表板、用户或报告)时,这些组件未显示在屏幕的右侧。我能得到什么帮助吗?
变化:
children: [
{
path: 'main/dashboard', component: DashboardComponent
},
{
path: 'main/user', component: UserComponent
},
{
path: 'main/reports', component: ReportsComponent
}
]
收件人:
children: [
{
path: 'dashboard', component: DashboardComponent
},
{
path: 'user', component: UserComponent
},
{
path: 'reports', component: ReportsComponent
}
]
否则你的路线需要看起来像 /main/main/dashboard 等才能命中。
您好,请从您的子路由配置中删除 main/:
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{
path: 'main',
component: MainComponent,
children: [
{
path: 'dashboard',component: DashboardComponent
},
{
path: 'user',component: UserComponent
},
{
path: 'reports',component: ReportsComponent
}
]
},
{ path: '**', redirectTo: 'main' }
];
您的其余代码没问题。