【发布时间】:2016-07-29 03:09:05
【问题描述】:
在尝试组织整个结构以便深入了解实际业务逻辑时,我遇到了以下问题。
我已经定义了路由的主控制器:
@Component({
selector: 'priz-app',
moduleId: module.id,
templateUrl: './app.component.html',
directives: [ROUTER_DIRECTIVES, SecureRouterOutlet, AppHeader],
providers: [AuthenticationService]
})
@RouteConfig([
{ path: '/home', name: 'Home', component: HomeComponent, useAsDefault: true },
{ path: '/login', name: 'Login', component: LoginComponent },
{ path: '/logout', name: 'Logout', component: LogoutComponent },
{ path: '/rrm/...', name: 'Rrm', component: RrmMainComponent }
])
那个控制器的模板是:
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<app-header></app-header>
<secure-outlet signin="Login" unauthorized="AccessDenied"></secure-outlet>
</div>
</div>
</div>
如您所见,其中包含 app-header 指令,如下所示:
@Component({
selector: 'app-header',
moduleId: module.id,
templateUrl: './app-header.component.html',
directives: [Collapse, DROPDOWN_DIRECTIVES, ROUTER_DIRECTIVES, TrackScrollDirective]
})
在它的模板里面的某个地方:
<a [routerLink]="['RrmMain']">RRM <span class="sr-only">(current)</span></a>
RrmMainComponent 看起来像这样:
@Component({
selector: 'rrm-main',
moduleId: module.id,
templateUrl: './rrm-main.component.html',
directives: [ROUTER_DIRECTIVES, SecureRouterOutlet]
})
@RouteConfig([
{path: '/', name: 'RrmMain', component: RrmMainComponent, useAsDefault: true, data: { roles:['ROLE_RRM_USER', 'ROLE_RRM_USER'] }}
])
一切都好,但我遇到了一个例外:
例外:路由器实例化期间出错! (路由器链接-> 路由器)。 angular2.js:23887 例外:实例化过程中出错 路由器! (RouterLink -> 路由器)。 angular2.js:23877:9
原始异常:“/”不允许子路由。使用“...” 父级的路由路径。
我尝试了任何我能想到的方法,但我被困在了这一点上。只是仍然没有足够的经验。
谢谢, 亚历克斯。
【问题讨论】:
-
您是否在
bootstrap()中添加了ROUTER_PROVIDERS?你加<script src="https://code.angularjs.org/2.0.0-beta.13/router.dev.js"></script>了吗?你能创建一个 Plunker 来复制吗? -
是的,我确实做到了。如果我有单级路线,这一切都有效。至于plunker,我会尽力的,已经是相当大的代码了。
-
请不要将所有代码添加到 Plunker,只添加重现问题所需的代码(最小可重现示例)。添加的代码越多,任何人尝试调试问题的可能性就越小。
标签: angular components router