我还在使用Angular2进行项目.
如果您想了解我需要做什么的更多详细信息,请参阅此issue.
我有一个通过bootstrap引导的AppComponent.这是一个非常简单的组件:
@Component({
selector: 'app-view',directives: [ Devtools,MainComponent ],template: `
该组件包括另一个:MainComponent(通过main-cmp选择器).出于某些原因,我想在MainComponent中设置我的路由.
这是代码:
@Component({
selector: 'main-cmp',directives: [ ROUTER_DIRECTIVES,NavComponent ],template: `
最后,MainComponent包含NavComponent,这是一个非常基本的导航.
问题是,通过此设置,我遇到了这个问题:
EXCEPTION:组件“AppComponent”没有路由配置.在NavComponent @ 2:15中的[[‘Home’]中.
当然,如果我将路由器的逻辑移动到AppComponent,一切都运行良好.
所以我的问题是:有没有办法将东西路由到另一个组件而不是引导的组件?
谢谢 :).
最佳答案
看起来这是不可能的,因为RouteRegistry类的generate方法明确依赖(硬编码)根组件.在源代码中查看此行:
> https://github.com/angular/angular/blob/master/modules/angular2/src/router/route_registry.ts#L345
RouteRegistry.prototype._generate = function(linkParams,ancestorInstructions,prevInstruction,_aux,_originalLink) {
(...)
var parentComponentType = this._rootComponent; // <----
(...)
var rules = this._rules.get(parentComponentType);
if (lang_1.isBlank(rules)) { // <----
throw new exceptions_1.BaseException("Component \"" +
lang_1.getTypeNameForDebugging(parentComponentType) +
"\" has no route config.");
}
(...)
};
此方法是从RouterLink指令的_updateLink方法间接使用的.
这是相应的堆栈跟踪:
RouteRegistry._generate (router.js:2702)
RouteRegistry.generate (router.js:2669)
Router.generate (router.js:3174)
RouterLink._updateLink (router.js:1205)
请参阅我用于调试问题的plunkr:https://plnkr.co/edit/8JojtgZmc8kA9ib6zvKS?p=preview.