代码之家  ›  专栏  ›  技术社区  ›  Mohamed Wahshey

需要离子3形式组的帮助,无法读取未定义的属性get

  •  1
  • Mohamed Wahshey  · 技术社区  · 6 年前

    我刚做了一个寄存器表,我以前在角5中使用表组,但是在离子3中,我得到了以下错误:

    1-无法读取未定义的属性“get”。

    2-错误错误:未捕获(承诺中):错误:formGroup需要一个formGroup 实例。请传一个进去。

       Example:
    
    
    <div [formGroup]="myGroup">
      <input formControlName="firstName">
    </div>
    
    In your class:
    
    this.myGroup = new FormGroup({
       firstName: new FormControl()
    });
    

    我的HTML:

    <ion-list>
      <form [formGroup]="register" (ngSubmit)="createUser()">
      <ion-item class="form-group" padding>
        <ion-label color="primary" floating>Name</ion-label>
        <ion-input formControlName="name" class="form-control" type="text">
        </ion-input>
      </ion-item>
      <ion-item class="form-group" padding>
        <ion-label color="primary" floating>User Name</ion-label>
        <ion-input formControlName="userName" class="form-control" type="text"> 
        </ion-input>
       </ion-item>
       <ion-item class="form-group" padding>
        <ion-label color="primary" floating>Email</ion-label>
        <ion-input formControlName="email" class="form-control" type="text"> 
        </ion-input>
       </ion-item>
       <ion-item padding class="form-group">
        <ion-label color="primary" floating>Password</ion-label>
        <ion-input formControlName="password" class="form-control" 
        type="password"></ion-input>
        </ion-item>
        <button type="submit" [disabled]="!register.valid" ion-button 
        color="primary" clear icon-start>
        <ion-icon name="contact"></ion-icon> Submit user</button>
      </form>
    </ion-list>
    

    我的TS:

    import { Validators, FormBuilder, FormGroup } from '@angular/forms';
    
    register: FormGroup;
    homePage = HelloIonicPage;
    constructor(public navCtrl: NavController, public navParams: NavParams, 
    private create: UsersData, private formBuilder: FormBuilder) {
    }
    ionViewDidLoad() {
    this.InitUserForm();
    console.log('ionViewDidLoad LoginPage');
    }
    InitUserForm() {
    let EMAIL_REGEXP = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)| 
    (".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0- 
    9]+\.)+[a-zA-Z]{2,}))$/;
    this.register = this.formBuilder.group({
      id: [0],
      name: ['', [Validators.required]],
      userName: ['', [Validators.required]],
      email: ['', [Validators.required, Validators.pattern(EMAIL_REGEXP)]],
      password: ['', [Validators.required, Validators.minLength(6)]]
    })
    }
    createUser() {
    this.create.createUsers(this.register.value);
    }
    

    到目前为止我所做的:

    1-尝试从离子输入切换到正常输入标签。

    2-尝试将窗体模块添加到应用程序模块。

    3-我仔细检查了离子形式的文件,并且照他们说的做了。

    我需要知道问题在哪里,是因为我没有添加ngModel吗?当我使用角度为5的formGroup时,我从不使用它。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Utpaul    6 年前

    你需要改变 .ts条 文件格式如下

    正在导入以下包:

    import { Validators, FormBuilder, FormGroup,FormControl } from '@angular/forms';
    

    然后在班里换衣服

    private register: FormGroup;
    constructor(public navCtrl: NavController, public navParams: NavParams, 
    private create: UsersData, private formBuilder: FormBuilder) {
       this.InitUserForm();
    }
    
      InitUserForm() {
    
        this.register = this.formBuilder.group({
          id: [0],
          name: ['', [Validators.required]],
          userName: ['', [Validators.required]],
          email: ['', [Validators.required, this.emailValidator.bind(this)]],
          password: ['', [Validators.required, Validators.minLength(6)]]
        })
      }
    
      createUser() {
        console.log(this.register.value);
      this.create.createUsers(this.register.value);
    }
    
      emailValidator(control: FormControl): {[s: string]: boolean} {
        if (!control.value.match("^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$")) {
          return {invalidEmail: true};
        }
      }
    

    My browser look