javascript - IonViewDidLoad 或 ionViewWillEnter 中的 Ionic 3 react 形式不起作用

标签 javascript angular ionic3 angular5 angular-reactive-forms

Ionic 3 Reactive Form 在 IonViewDidLoad 或 ionViewWillEnter 中不起作用。它说

UserInfoPage.html:18 ERROR TypeError: this.form._updateTreeValidity is not a function

如果我将表单构建器代码放入 Ionic Page 的构造函数中,则会显示

UserInfoPage.html:23 ERROR TypeError: Cannot read property 'dateOfBirth' of undefined

我正在对表单页面使用延迟加载。请大家帮助和指导。完整代码如下:

用户信息.ts:

export class UserInfoPage {

  createForm(): any {
    this.userInfoForm = this.fb.group({
      dateOfBirth: [ '', Validators.compose([Validators.required, Validators.pattern(new RegExp("(0[123456789]|10|11|12)([/])([1-2][0-9][0-9][0-9])"))]) ],
      weight: [ '', Validators.required, Validators.compose([Validators.pattern(new RegExp("[0-9]*"))]) ],
      height: [ '', Validators.required, Validators.compose([Validators.pattern(new RegExp("[0-9]*"))]) ],
    });
  }

  @ViewChild("userInfoForm") content: Content;

  userInfoForm: FormGroup;
  isFormLoaded: boolean;

  constructor(public navCtrl: NavController, private fb: FormBuilder, public navParams: NavParams) {
    this.isFormLoaded = false;    
  }

  ionViewWillEnter() {
    this.createForm();
    this.isFormLoaded = true;
    this.content.resize();    
  }

}

用户信息.html:

<ion-content #userInfoForm>
  <form [formGroup]="userInfoForm" *ngIf="isFormLoaded">
    <ion-list>
      <ion-list-header>Please Enter Your Following Information</ion-list-header>    
      <ion-item>
        <ion-label color="primary" floating>Date of Birth</ion-label>
        <ion-input [formControl]="userInfoForm.controls['dateOfBirth']" required></ion-input>
      </ion-item>
      <ion-item>
        <ion-label color="primary" floating>Weight</ion-label>
        <ion-input [formControl]="userInfoForm.controls['weight']" type="number" pattern="[0-9]*" required></ion-input>
      </ion-item>
      <ion-item>
        <ion-label color="primary" floating>Height</ion-label>
        <ion-input [formControl]="userInfoForm.controls['height']" type="number" pattern="[0-9]*" required></ion-input>
      </ion-item>
    </ion-list>
  </form>
</ion-content>

这里是 ionic 和 Angular 新手。谢谢。

最佳答案

最好在 ionViewDidLoad 中使用它。另外,userInfoForm 既是模板变量又是组件变量。这可能是错误的原因。

另一个类似的问题:https://stackoverflow.com/a/40900504/2120711

关于javascript - IonViewDidLoad 或 ionViewWillEnter 中的 Ionic 3 react 形式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47913686/

相关文章:

javascript - 如何让 Rails Assets 管道生成源 map ?

javascript - 将所有双方括号替换为 Angular 或 Java 脚本中的自定义输入标签

angular - 无法读取未定义的属性 'navCtrl'

angular - 这是ionic3的页面跳转

javascript - typescript 导入模块作为变量不起作用

angular - Ionic 2 - 加载 Controller 不起作用

javascript - 类似的 javascript 代码吗?

javascript - 向动态创建的复选框添加验证 jQuery

Javascript 访问硬件?

c# - Asp.net 核心 webapi 获取从 Angular4 应用程序发布的空值