Моя структура приложения имеет 1 службу и 2 компонента:
Служба: содержит все подключения к пожарному хранилищу. ViewComponent: получает список из службы и отображает его. ItemManagementComponent: отображает форму и позволяет пользователю добавлятьновая запись.
Проблема У меня есть кнопка в ViewComponent, которая (теоретически) отправляет documentID в ManagementComponent, который затем отображает данные этого документа в форме, позволяя пользователюОбновить.Прямо сейчас, когда я нажимаю кнопку, я могу отследить doumentID, и сервис полностью возвращается через мое приложение, но я на самом деле не получаю возвращенный документ.Я могу запустить точно такой же код с проводным documentID, и он прекрасно работает, поэтому, очевидно, я что-то упускаю.
Сервис
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;
}
ItemManagement Component
@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, работающая с немного другой реализацией, которая приняла переменную, так что я действительно озадачен.Любая помощь с благодарностью!