Я борюсь с фреймворком Angular, чтобы мое приложение работало гладко, но я не могу решить проблему с маршрутизацией. У меня есть верхний уровень AppComponent
и app-routing.module.ts
, которые управляют навигацией через мой пользовательский SlideMenuComponent
. Мой упрощенный HTML-шаблон AppComponent
:
<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()'?
, ngOnInit()
не вызывается для открытого CourseCompontent
и не обновляется, пока я не нажму любую из кнопок на странице. У меня возникла эта проблема при ручной навигации по 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>
- person Veetaha   schedule 03.11.2018api.data
? - person Poul Kruijt   schedule 03.11.2018