NavigationError订阅者未定义

时间:2018-02-08 04:54:13

标签: angular angular2-routing jhipster

我正在使用jhipster 4.13.3和angular 5

使用在线页面生成jhipster项目,执行“jhipster import-jdl”命令生成实体。该应用程序运行正常,直到这一点。

然后我继续添加我的业务逻辑。我更新了生成的实体component.ts和html文件。另外,将以下代码添加到navbar.component.html

    <li *jhiHasAnyAuthority="'ROLE_MANAGER'" ngbDropdown class="nav-item dropdown pointer" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
        <a class="nav-link dropdown-toggle" ngbDropdownToggle href="javascript:void(0);" id="manager-menu">
            <span>
                <i class="fa fa-user-plus" aria-hidden="true"></i>
                <span>Manager</span>
            </span>
        </a>
        <ul class="dropdown-menu" ngbDropdownMenu>
            <li>
                <a class="dropdown-item" routerLink="task-group" routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }" (click)="collapseNavbar()">
                    <i class="fa fa-fw fa-user" aria-hidden="true"></i>
                    <span>List of task groups</span>
                </a>
            </li>
        </ul>
    </li>

    <li *jhiHasAnyAuthority="['ROLE_MANAGER','ROLE_EDITOR','ROLE_TRANSCRIPT']" ngbDropdown class="nav-item dropdown pointer" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
        <a class="nav-link dropdown-toggle" ngbDropdownToggle href="javascript:void(0);" id="my-task-menu">
            <span>
                <i class="fa fa-user-plus" aria-hidden="true"></i>
                <span>My tasks</span>
            </span>
        </a>
        <ul class="dropdown-menu" ngbDropdownMenu>
            <li>
                <a class="dropdown-item" routerLink="task" routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }" (click)="collapseNavbar()">
                    <i class="fa fa-fw fa-user" aria-hidden="true"></i>
                    <span>List of tasks</span>
                </a>
            </li>
        </ul>
    </li>

请注意,我没有创建任何新路线。我指的是创建routerLink的实体。

运行应用程序后,点击几下后,我收到以下错误。单击我创建的菜单项后出错。我只看到屏幕上的页眉和页脚。

  

路由器事件:NavigationError platform-b​​rowser.js:380   NavigationError(id:2,url:'/ user-info',错误:TypeError:订阅者   未定义)platform-b​​rowser.js:367 {...}错误:TypeError:subscriber   未定义堆栈跟踪:[object Object] id:2 url:“/ user-info”    proto :Object {constructor:NavigationError(),toString:NavigationError.prototype.toString()}

我应该将路由定义“全局”吗?如果是这样,怎么样?

非常感谢您解决路由器问题的任何帮助。

1 个答案:

答案 0 :(得分:1)

我犯的错误是直接在实体目录下或任何已生成的实体下创建组件和服务类。后来我用这些新组件更新了路由器。可能这会使路由器定义迷失方向。

作为修复,我创建了模块并在其下放置了组件和服务。这是我为自己准备的笔记。

  • ng g m new-module --routing
  • 在新目录中添加组件,服务和其他工件
  • 导出index.ts文件中的组件
  • 将SharedModule和Service添加到new-module.module.ts
  • 将路由添加到new-module-routing.module.ts
  • 在路由模块中写入ResolvePagingParams。 (参见生成实体中的样本)
  • 将NewModule添加到../entity.module.ts
  • 更新webapp \ app \ layouts \ navbar \ navbar.component.html