Angular ActivateRoute активирует обнаружение изменений
Я заметил, что angular ActivatedRoute немедленно активирует обнаружение изменений, что приведет к ExpressionChangedAfterItHasBeenCheckedError
ошибка. Как я мог избежать этого?
public ngOnInit(): void {
this.subscriptions.push(this.pageService.pageChanges.subscribe(() => {
this.currentPage = this.pageService.currentPageData();
}));
this.route.params
.switchMap(params => {
console.log("route.params.switchMap called: ", params);
const requestedPageNumber = parseInt(params['page'], 10);
return this.wizard.getPage(requestedPageNumber);
})
.subscribe((refocus) => {
console.log("route.params subscribed called: ", refocus);
this.refocus = !!refocus;
});
this.subscriptions.push(this.pageService.saveChanges.subscribe(() => {
if (this.page) {
this.page.saveData();
}
}));
}
1 ответ
Хотя это не чистое решение, я рекомендую setTimeout()
, Это делает асинхронное выполнение на хуке жизненного цикла.
Пример:
setTimeout(() => {
this.route.params
.switchMap(params => {
console.log("route.params.switchMap called: ", params);
const requestedPageNumber = parseInt(params['page'], 10);
return this.wizard.getPage(requestedPageNumber);
})
.subscribe((refocus) => {
console.log("route.params subscribed called: ", refocus);
this.refocus = !!refocus;
});
this.subscriptions.push(this.pageService.saveChanges.subscribe(() => {
if (this.page) {
this.page.saveData();
}
}));
), 1000};