У меня есть пример приложения для управления небольшим списком , состоящий из двух компонентов Angular 6 и службы:
ShapeListComponent
Список фигуркаждая с кнопкой редактирования, которая считывается из коллекции Cloud Firestore, подписывается с помощью вызова snapshotChanges () на вызов AngularFirestoreCollection и удерживается в наблюдаемой rxjs.
ShapeEditComponent
Страница редактирования для каждой фигуры, которая позволяет обновить имя или удалить фигуру из коллекции.После редактирования, удаления или обновления фигуры пользователь возвращается к маршруту списка фигур.
ShapeService
Перенос вызовов в AngularFire.
Проблема
Удаление элемента ведет себя не так, как я ожидаю.После перенаправления обратно в список удаленный элемент все еще там, и каждый элемент после удаленного элемента в списке дублируется.
Однако данные документа, видимые в консоли Firebase, удаляются правильно, и нетдубликаты появляются.
Кто-нибудь может пролить свет на то, является ли мой подход к использованию AngularFire с Cloud Firestore и rxjs ошибочным, или это должно работать правильно?
Шаги для воспроизведения
- Создание нового проекта Firebase
- Настройка функции базы данных (выбор бета-версии Cloud Firestore в тестовом режиме)
В настройках проекта Firebase выберите «Добавить»Firebase к вашему веб-приложению »и скопируйте в буфер обмена файлы js, содержащие информацию о вашем соединении (игнорируя последнюю строку, которая инициализирует приложение, как это сделано в описании модуля ниже).
// Initialise Firebase
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "..."
};
Перейдите к примеру со стеком, который я создал , и в app.module.ts
замените тот же фрагмент, переименовав переменную config
в firebaseConfig
- Добавьте несколько фигур
- Отредактируйте первую фигуру в списке и нажмите кнопку «Удалить».
- Полученный список содержит вышеупомянутые дубликаты.
Другие примечания
СэмПроблемное поведение НЕ наблюдается, когда функция удаления включена в компонент списка (и не выполняется навигация по маршрутизатору).( См. Этот пример, который ведет себя правильно - также необходимо указать на ваш проект Firebase Cloud Firestore)