Моя структура приложения имеет 1 службу и 2 компонента:
Служба: Содержит все подключения к Firestore ViewComponent: Получает список из службы и отображает его ItemManagementComponent: Отображает форму и позволяет пользователю добавить новую запись.
Проблема У меня есть кнопка в ViewComponent, которая (теоретически) отправляет идентификатор документа в ManagementComponent, который затем отображает данные этого документа в форме, позволяя пользователю обновлять. Прямо сейчас, когда я нажимаю кнопку, я могу отслеживать идентификатор документа, и служба возвращается на всем протяжении моего приложения, но на самом деле я не получаю возвращенный документ. Я могу запустить точно такой же код с аппаратным идентификатором документа, и он отлично работает, так что, очевидно, я что-то упускаю.
Сервис
getUpdateInventoryItem(updateId: string) {
console.log('service', updateId)
this.updateId = updateId
console.log('service2', this.inventoryCollectionRef.doc(updateId).ref.get())
return this.inventoryCollectionRef.doc(updateId).ref.get()
}
Просмотреть HTML
<td><button type="button" class="btn btn-default" (click)="updateInventory(item.id)">Upd</button></td>
<app-item-management [updateID]="ChildUpdateId"></app-item-management>
Просмотреть компонент
@Output() inventoryUpdate = new EventEmitter();
public ChildUpdateId: string;
updateInventory(updateId: string) {
this.ChildUpdateId = updateId;
}
Компонент управления товарами
@Input() updateID;
ngOnChanges(incomingID: SimpleChanges) {
if (!incomingID['updateID'].isFirstChange()) {
for (let ID in incomingID) {
let chng = incomingID[ID];
let cur = JSON.stringify(chng.currentValue);
console.log('current', cur)
this.updateInventory(cur)
}
}
}
updateInventory(incomingID) {
console.log('updateFunction',incomingID)
this.inventoryService.getUpdateInventoryItem(incomingID)
.then((doc) => {
if (doc.exists) {
this.editItem = doc.data();
this.inventoryForm.patchValue(this.editItem);
this.update = true;
} else {
console.log("No such document!");
}
}).catch(function (error) {
console.log("Error getting document:", error);
});
};
Итак, если я нажму кнопку обновления в представлении HTML, моя консоль покажет мне следующее: снимок экрана журнала консоли С моей точки зрения, я вижу, что идентификатор передается службе, и служба возвращает правильно отформатированный документ.
Если я скопирую идентификатор документа непосредственно из журнала консоли и привяжу его к функции updateInventory в ItemManagementComponent, а затем вызову встроенную функцию из NgOnChanges, она сработает. Просто каким-то образом, когда я передаю этот идентификатор как переменную, происходит короткое замыкание.
У меня была та же самая функция updateInventory, работающая с немного другой реализацией, которая принимала переменную, поэтому я действительно в тупике. Любая помощь приветствуется!