THE SITUATION:
I am trying to make a very simple login form in my Ionic 2 app.
No matter what I try, I keep getting this error:
formGroup expects a FormGroup instance. Please pass one in.
THE CODE:
The page component:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
@Component({
selector: 'login-page',
templateUrl: 'login-page.html'
})
export class LoginPage {
loginForm: FormGroup;
constructor(public navCtrl: NavController, private formBuilder: FormBuilder) {}
ionViewDidLoad()
{
console.log('Login page loaded');
this.loginForm = this.formBuilder.group({
email: ['', Validators.required],
password: ['', Validators.required],
});
}
submitLogin()
{
console.log('Doing login..');
}
}
The view:
<ion-header>
<ion-navbar>
<ion-title>LoginPage</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<form [formGroup]="loginForm" (ngSubmit)="submitLogin()">
<ion-item>
<ion-label>Email</ion-label>
<ion-input #email type="email" formControlName="email"></ion-input>
</ion-item>
<ion-item>
<ion-label>Password</ion-label>
<ion-input #password type="text" formControlName="password"></ion-input>
</ion-item>
<button ion-button block type="submit">Submit</button>
</form>
</ion-content>
THE QUESTION:
Do you why am I getting the error?
Do you know what is wrong with that code?
Thanks!
Add the code in the ionViewDidLoad
into the constructor. It's probably not assigning the form in time, causing the view to use undefined
The formBuilder init was ngOnInit method. That must be in the constructor.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With