我正在努力使用 Angular 框架来让我的应用程序顺利运行,但我无法解决路由问题。我有一个顶层AppComponent
,app-routing.module.ts
它通过我的自定义管理导航SlideMenuComponent
。我的简化 html 模板AppComponent
:
<app-slide-menu [buttons]="menuButtons"></app-slide-menu>
<router-outlet></router-outlet>
MySlideMenuComponent
有以下 html 作为其核心:
<nav><div *ngFor="let button of buttons">
<a routerLink="{{button.routerLink}}"
>{{button.name}}</a>
</div></nav>
用户可以'/courses'
通过此滑动菜单导航到,该菜单由对从服务器检索CoursesComponent
到的特定 s 的链接进行分页管理。CourseComponent
这些组件驻留在自己的courses.module.ts
模块中,并拥有自己的courses-routing.module.ts
. 但是,当我单击任何这些链接时,我会收到Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?
控制台警告,ngOnInit()
不要求 openned 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 来演示这个问题: