Я создаю таблицы полей ввода из хранимых в Firebase объектов JSON, называемых «Страница». «Страница» - это объект JSON, представляющий таблицу со строками, ячейками и элементами ячеек внутри ячеек. Я загружаю и создаю компоненты Angular из объекта Page JSON, представляющего таблицу, например:
<table app-page class="page"*ngFor="let page of pages | async" [page]="page" border="5" [attr.height]="page.pheight" [attr.width]="page.pwidth" align="center" valign="top"></table>
Каждый раз, когда значение в поле ввода на странице изменяется, я вызываю метод из компонента поля ввода 'onBlur', чтобы сохранить эту страницу в Firestore, например:
inputBlur(e: Event) {
this.cellel.value = this.inputEl.nativeElement.value.trim();
var page = this.scService.getCurrPageComp().page;
console.log("page =" + page);
this.afs.collection('pages').doc(page.$key).set(JSON.parse(JSON.stringify(page)));
}
Проблема в том, что после this.afs сохраняется обновленный объект Page. Все дерево «let page of pages | async» возвращается, как будто они являются новыми объектами, и перестраивает страницу, как если бы она была новой. Я не хочу, чтобы это было связано с мнением. Я просто хочу, чтобы он сохранял обновленную «Страницу», а не перезагружал ее, как если бы это был новый объект «Страница».
Вот Stackblitz, показывающий ситуацию:
https://ang -change-detect-1.stackblitz.io