我在使用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
监管,它对从服务器检索到的特定CourseComponent
的链接进行分页。 这些组件位于其自己的courses.module.ts
模块中,其中包含它们自己的courses-routing.module.ts
。 但是,当我点击任何这些链接时,我会收到Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?
控制台警告,并且CourseCompontent
在打开时没有调用ngOnInit()
,而且在我点击页面上的任何按钮之前不会更新。 当我手动通过router.navigate()
导航时,也遇到了此问题,解决方法是将此任务转发到NgZone.runTask(router.navigate())
,但是为什么使用anchor
标记和routerLink
指令会发生这种情况呢?以下是我的
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动画演示了这个问题:
<a [routerLink]="course._id" [queryParams]="{ page: '1', limit: '5' }" > {{course.name}} ({{course.description}}) </a>
时出现问题。 - Veetahaapi.data
的吗? - Poul Kruijt