я получаю следующее сообщение об ошибке при попытке инициировать контрольные значения формы в моем методе ngOnInit:Set Default Form Значения от API вызова
Ошибка
formGroup expects a FormGroup instance. Please pass one in.
Метод
ngOnInit() {
this.getBusinessData().then((response:any) => {
this.businessForm = this.formBuilder.group({
'business_name': [response.data.business_name, Validators.required],
'email': [response.data.email, Validators.required]
});
});
}
Мне удалось обойти это, используя setValue после возврата обещания от моего вызова службы API, например так и он работает:
ngOnInit() {
// Build the form
this.businessForm = this.formBuilder.group({
'business_name' : ['', Validators.required],
'email' : ['', Validators.required],
});
// Fetch data for the view
this.getBusinessData().then((response:any) => {
this.businessForm.setValue({
business_name: response.data.business.business_name,
email: response.data.business.email
});
});
}
Но, похоже, это не лучший способ. Как я должен привязывать данные, возвращаемые API к элементам управления формы? Похоже, я не должен использовать formGroups и, возможно, просто использовать ngModels для привязки данных к формам?
UPATE: методом micronyks, я попробовал следующее:
ngOnInit() {
// Bind data to the form
this.getBusinessData().then((response:any) => {
this.businessForm = this.formBuilder.group({
'business_name' : [response.data.business.business_name==undefined?'': response.data.business.business_name, Validators.required],
'email' : [response.data.business.email==undefined?'': response.data.business.email, Validators.required]
});
});
}
Но он возвращает следующую ошибку в консоли:
EXCEPTION: Uncaught (in promise): Error: Error in edit.template.html:12:10 caused by: formGroup expects a FormGroup instance. Please pass one in.
Это, кажется, происходит, когда он получает завернуты вокруг вызова API. Является ли значение заменяемым?
Он работает? если это так, вы просто хотите узнать лучший способ? – micronyks
@micronyks мой второй метод работает, но я ищу более чистое решение. Я считаю, что должен быть лучший способ, чем запустить метод setValue для объекта formGroup. Есть ли способ связать данные внутри конструктора formBuilder после того, как обещание будет разрешено из моего вызова API? Я продолжаю получать ошибку, указанную выше, когда я пытаюсь выполнить –
. Я еще не пробовал это раньше, но вы можете попробовать следующее: 'this.businessForm = this.formBuilder.group ({ 'business_name': [response.data.business.business_name == undefined? '': response.data.business.business_name, Validators.required], ... }); ' – micronyks