當我使用創建表單組時,我有一個postcode$observable 并希望postalCode用它的值填充表單輸入this.customerForm = this.formBuilder.group({})。
這個 SO post answersubscribe建議在可觀察的 a 中初始化表單:
ngOnInit() {
// ...
// .take(2) to ensure that it will run only for the first value:
contactsObservable.take(1).subscribe(contacts => {
this.form = this.fb.group({contact: [this.contacts[0], Validators.required]];
});
// ...
}
但是,我的表單有很多不同的欄位,需要從各種可觀察物件中填充...
initForm = () => {
this.myForm = this.form.group({
postCode: ['', Validators.required],
// ...many other fields...
});
};
''是否可以直接從 observable填充?如果是這樣,我可以簡單地將眾多可觀察值傳遞到一個表單組構建器中。
uj5u.com熱心網友回復:
解決此問題的一種方法是使用forkJoin組合所有可觀察物件。
基本上,這個函式需要一個 observables 陣列,當所有都完成后,發出的值會被組合并以與 observables 陣列相同的順序回傳到一個陣列中,更多細節在這里。
import { forkJoin } from 'rxjs';
const observables: Array<Observable<TA | TB | TC>> = [observableA$, observableB$, observableC$]; // N quantity of observables
forkJoin(observables).subscribe((responseData: Array<TA | TB | TC>) => {
this.myForm = this.form.group({
firstField: [responseData[0] as TA, [Validators.required]],
secondField: [responseData[1] as TB, [Validators.required]],
thirdField: [responseData[2] as TC, [Validators.required]],
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479594.html
