我正在开发一个应用,该应用允许用户输入事件邮政编码,并使用GoogleMaps API在地图上放置事件标记。为此,我需要将用户邮政编码转换为lat / lng,然后将此数据上传到服务器。
该应用程序工作正常,但有一个缺点。为了使其正常工作,我必须禁用formDirective.resetForm(),否则会引发错误:
TypeError:formDirective.resetForm()不是函数。
所以我剩下的是一个应用程序,该应用程序在功能上可以很好地将标记渲染到地图上,但是界面丑陋,提交表单后不会重置。
是否有其他方法可以使我重置表格而不会发生此错误?我考虑过将地址解析函数放在单独的方法中,然后将所得的经/纬度数据传递到onAddPost()。但是onAddPost()函数需要一个formDirective参数,因此我不确定如何解决这个问题。
任何指导或建议,深表感谢。 谢谢。
事件发布HTML
<form [formGroup]="form" #formDirective="ngForm" (submit)="onAddPost(form, formDirective)">
<!-------- HTML ---------!>
</form>
打字稿文件
async onAddPost(formDirective: FormGroupDirective) {
/**** Convert user postcode to lat/lng using geocoding service ********/
this.latLngPostcode = undefined;
const location = await
this.geocodeService.geocodeAddress(this.form.value.postcode).toPromise();
this.latLngPostcode = {
lat: location.lat,
lng: location.lng
};
console.log('Postcode successfully converted to LAT/LNG: ',
this.latLngPostcode.lat + ' ' + this.latLngPostcode.lng);
/******* Upload form data to postService ******************************/
if (this.form.invalid) {
return;
}
this.postsService.addPost(
this.form.value.content,
this.form.value.title,
this.form.value.datePicker,
this.form.value.postcode,
this.form.value.image,
this.latLngPostcode.lat,
this.latLngPostcode.lng);
this.form.reset();
formDirective.resetForm(); /* <--- TypeError:formDirective.resetForm is not a function */
}
}