【发布时间】:2016-04-29 13:20:55
【问题描述】:
我正在尝试根据路由将子组件加载到另一个组件中。
现在我只有两个页面,我想将第三条路由 (dashboard) 作为子组件加载到 admin 页面中。
@Component({
selector: 'my-app',
directives: [ ROUTER_DIRECTIVES ],
template: `<router-outlet></router-outlet>`
})
@RouteConfig([
{path: '/login', name: 'Login', component: LoginComponent, useAsDefault: true},
{path: '/admin', name: 'Admin', component: AdminComponent},
{path: '/dashboard', name: 'Dashboard', component: DashboardComponent},
])
export class AppComponent { }
我默认从登录页面开始(现在已经足够好了)。在那个页面上,我点击了一个登录按钮,它将从LoginComponent 进行重定向。像这样:
public login() {
this.router.navigate(['/Admin']);
}
然后我最终进入/admin 页面。但是在那个页面上,我想根据 URL 显示来自另一个组件的数据。例如,我希望/admin 重定向到/admin/dashboard,因此我可以在admin 组件中显示dashboard 组件。
如果我然后导航到类似:/admin/users。然后应将dashboard 组件替换为users 组件。等等
但是我怎样才能让它工作呢?我的管理组件如下所示:
@Component({
selector: 'admin',
template: `<h1>Admin page</h1>
Load child components in this routerLink: (but how?)
<router-link>/router-link>`,
})
export class AdminComponent {
constructor(private router: Router) {
}
}
所以我基本上想知道两件事:
- 我如何告诉 Angular 2
/admin应该始终重定向到/admin/dashboard - 如何首先加载(基于 URL
/admin/dashboard)AdminComponent,然后在其中(通过router-link)加载Dashboard组件
【问题讨论】:
-
在嵌套组件中使用另一个路由组件和
router-link。 -
@Langley 不确定您的意思?现在,当我导航到
/admin/dashboard时,它不起作用。我在AdminComponent中有一个router-link,但dashboard组件内部没有显示。当我转到/admin/dashboard时,Admin组件甚至不会加载。 -
不是在
AppComponent中添加/dashboard路由,而是在AdminComponent中添加它,并让AdminComponent包含另一个<router-outlet></router-outlet>。这样AppComponent将解决路径的“/admin”部分,AdminComponent将解决路径/dashboard的第二部分。另请注意,router-link不是标签,而是用于定义要前往的路线名称的属性,例如:<a [routeLink]="['Admin']"> -
@Langley 谢谢,搞定了!不得不在我的
AdminURL 路由之后添加/...,并且忘记在Admin组件中添加ROUTE_DIRECTIVES。但在那之后一切都很好。您能否将您的 cmets 放入答案中,以便我接受。