【发布时间】:2019-04-07 13:58:02
【问题描述】:
我正在努力使用 Angular 框架来让我的应用程序顺利运行,但我无法解决路由问题。
我有一个顶级AppComponent 和app-routing.module.ts,它们通过我的自定义SlideMenuComponent 管理导航。我的AppComponent的简化html模板:
<app-slide-menu [buttons]="menuButtons"></app-slide-menu>
<router-outlet></router-outlet>
我的SlideMenuComponent有以下html作为核心:
<nav><div *ngFor="let button of buttons">
<a routerLink="{{button.routerLink}}"
>{{button.name}}</a>
</div></nav>
用户可以通过此滑动菜单导航到'/courses',该菜单由CoursesComponent 监督,该菜单对指向从服务器检索到的特定CourseComponents 的链接进行分页。这些组件驻留在它们自己的courses.module.ts 模块中以及它们自己的courses-routing.module.ts 中。但是,当我单击任何这些链接时,我会收到Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'? 控制台警告,ngOnInit() 不会被调用为打开的CourseCompontent,并且它不会更新,直到我单击页面上的任何按钮。我在通过router.navigate() 手动导航时遇到了这个问题,通过将此任务转发到NgZone.runTask(router.navigate()) 解决了这个问题,但是为什么anchor 标签和routerLink direcrives 会发生这种情况?
这是我的CoursesComponent 代码摘录:
<nav><ul>
<li *ngFor="let course of api.data | paginate: {
currentPage: currentPage, itemsPerPage: limit, totalItems: api.total
}">
<a
[routerLink]="course._id"
[queryParams]="{ page: '1', limit: '5' }"
>
{{course.name}} ({{course.description}})
</a>
</li>
</ul></nav>
演示问题的 gif:
【问题讨论】:
-
你能试试这个代码
-
@Suresh 抱歉,这可能有点误导,但这段代码工作正常,它是我的幻灯片菜单链接,虽然我试图改变它的插值类型,但没有任何有效的改变。当我点击
<a [routerLink]="course._id" [queryParams]="{ page: '1', limit: '5' }" > {{course.name}} ({{course.description}}) </a>时出现问题 -
RouteLink 应该在 [] 括号中定义。 [routerLink]="[course._id]".
-
@Suresh 尝试过,但没有任何变化。实际上 routerLink 可能只是一个字符串,而不是路径数组
-
@Suresh 是的,我可以使用它作为解决方法,但是为什么会发生这种情况?
标签: angular angular-routing angular-router angular7 angular-routerlink