Angular 6反应形式:如何修复TypeError:formDirective.resetForm()不是函数

时间:2018-12-22 13:13:32

标签: angular angular-reactive-forms

我正在开发一个应用,该应用允许用户输入事件邮政编码,并使用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 */
  }
}

0 个答案:

没有答案