Причина в том, что estadoChange
вашего сервиса не будет синхронизироваться с вашим отредактированным элементом domiciliario
. Если вы хотите, чтобы все элементы domiciliarios
сохраняли независимый статус estado
, вам необходимо обновить каждый из них, указав точный соответствующий им собственный статус, что означает, что вы должны воспользоваться значением mat-slide-toggle
.
Вы можете попробовать с ngModel
и ngModelChange
.
<mat-slide-toggle #toggle [ngModel]="domiciliario.estado" (ngModelChange)="actualizarEstado(domiciliario.id, $event)"></mat-slide-toggle>
// component function
actualizarEstado(key, obj, e){
this.fs.updateEstado(key, e);
}
// service function
updateEstado(key, estado){
this.afs.doc('domiciliarios/' + key).update({estado});
}
см. Исправлено демо .
Дополнительная информация:
Каждый раз, когда вы изменяете элемент, это приводит к изменению значения базы данных и повторной визуализации всех элементов ngFor, вы должны рассмотреть возможность использования trackBy
для предотвращения повторной визуализации тех же элементов, см. Также docs и решение для ng для вопроса производительности .