# #angular #google-cloud-firestore
Вопрос:
То, о чем я прошу, довольно просто, но я просто не могу разобраться в этом или найти решение для Firestore.
Я специально борюсь с отображением текущей записи поля в форме на основе идентификатора, отправленного в URL. Я также не думаю, что он также правильно получает условие «где».
т. е. Когда вы приходите редактировать запись, я пытаюсь заставить ее отображать значение «домен» в поле для редактирования на основе идентификатора, отправленного в URL.
файл ts:
form = new FormGroup({
domain: new FormControl(""),
});
constructor(
private aptService: DomainService,
private actRoute: ActivatedRoute,
private router: Router,
public fb: FormBuilder,
public authService: AuthenticationService,
public fireStore: AngularFirestore
) {
this.id = this.actRoute.snapshot.paramMap.get('id');
const docRef = this.fireStore.collection("qm-domain", (ref) =>
ref.where("id", "==", this.id)
);
docRef.snapshotChanges().subscribe((res) => {
this.form.setValue(res);
})
}
html-файл:
<form [formGroup]="form" (ngSubmit)="updateForm()">
<ion-item>
<ion-label position="floating">Domain</ion-label>
<ion-input formControlName="domain" type="text" required></ion-input>
</ion-item>
<ion-row>
<ion-col>
<ion-button type="submit" color="primary" shape="full" expand="block">Update Domain</ion-button>
</ion-col>
</ion-row>
</form>
Ответ №1:
Я, наконец, понял это.
Для всех, у кого есть такая же проблема, вот что я сделал:
form = new FormGroup({
domain: new FormControl(""),
});
constructor(
private aptService: DomainService,
private actRoute: ActivatedRoute,
private router: Router,
public fb: FormBuilder,
public authService: AuthenticationService,
public fireStore: AngularFirestore
) {
this.id = this.actRoute.snapshot.paramMap.get("id");
// get the record based on this.id
const docRef = this.fireStore
.collection("qm-domain")
.doc(this.id)
.snapshotChanges();
// put it in the form
docRef.subscribe((res) => {
this.form.setValue(res.payload.data());
console.log(res.payload.data());
});
}