javascript – Angular 2:在另一个组件上定义路由器而不是引导路由器

前端之家收集整理的这篇文章主要介绍了javascript – Angular 2:在另一个组件上定义路由器而不是引导路由器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我还在使用Angular2进行项目.
如果您想了解我需要做什么的更多详细信息,请参阅此issue.

我有一个通过bootstrap引导的AppComponent.这是一个非常简单的组件:

  1. @Component({
  2. selector: 'app-view',directives: [ Devtools,MainComponent ],template: `

该组件包括另一个:MainComponent(通过main-cmp选择器).出于某些原因,我想在MainComponent中设置我的路由.

这是代码

  1. @Component({
  2. 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

这是代码错误代码

  1. RouteRegistry.prototype._generate = function(linkParams,ancestorInstructions,prevInstruction,_aux,_originalLink) {
  2. (...)
  3. var parentComponentType = this._rootComponent; // <----
  4. (...)
  5. var rules = this._rules.get(parentComponentType);
  6. if (lang_1.isBlank(rules)) { // <----
  7. throw new exceptions_1.BaseException("Component \"" +
  8. lang_1.getTypeNameForDebugging(parentComponentType) +
  9. "\" has no route config.");
  10. }
  11. (...)
  12. };

方法是从RouterLink指令的_updateLink方法间接使用的.

这是相应的堆栈跟踪:

  1. RouteRegistry._generate (router.js:2702)
  2. RouteRegistry.generate (router.js:2669)
  3. Router.generate (router.js:3174)
  4. RouterLink._updateLink (router.js:1205)

请参阅我用于调试问题的plunkr:https://plnkr.co/edit/8JojtgZmc8kA9ib6zvKS?p=preview.

猜你在找的JavaScript相关文章