Ionic And Angular 5 表单生成器和组未读取值
Ionic And Angular 5 form builders and groups is not reading values
我正在使用 angular 学习 ionic。
我创建了一个登录表单:
<form [formGroup]="login">
<ion-item>
<ion-label>
<ion-icon android="android-contacts" name="contacts"></ion-icon>
</ion-label>
<ion-input type="text" value="" name="username" [formControlName]="'username'" ></ion-input>
</ion-item>
<ion-item>
<ion-label>
<ion-icon android="android-unlock" md="md-unlock"></ion-icon>
</ion-label>
<ion-input type="password" value="" name="password" [formControlName]="'password'" placeholder="Password"></ion-input>
</ion-item>
</form>
<button ion-button full (click)="onLoginClick()" [disabled]="login.valid" >LOGIN</button>
在这里我用控件声明了表单组:
constructor(public fb: FormBuilder, public authService: ApiAuthProvider, public altCtrl: AlertController, public navCtrl: NavController,
public navParams: NavParams) {
this.login = fb.group({
username: new FormControl(['u', Validators.required]),
password: new FormControl(['p', Validators.required])
})
}
ionic serve
处没有错误,但是登录按钮没有被禁用,点击登录按钮时无法读取我在用户名输入中输入的内容:
onLoginClick(){
console.log(this.login['username']);
}
结果总是显示undefined
。
顺便说一句,在纯 Angular 应用程序中使用 ionic 中的表单构建器是一样的吗?
您必须像
一样访问表单控件值
onLoginClick(){
console.log(this.login.get('username').value);
}
并且您还试图在表单有效时禁用它。你应该检查无效
<button ion-button full (click)="onLoginClick()" [disabled]="login.invalid" >LOGIN</button>
编辑:
以这种方式修改表单控件参数:您将它们作为数组传递。它们应该是两个独立的参数。
this.login = fb.group({
username: new FormControl('u', Validators.required),
password: new FormControl('p', Validators.required)
})
如果您有多个验证器,例如
,您可以添加验证器数组
new FormControl('u', [Validators.required, Validators.maxlength])
您可以使用
获取表单的值
this.login.value
;
如果您在 html 中使用它,请这样做。
{{login.value | json}}
或者您可以使用\
获取特定控件的值
this.login.get('controlName).value;
我正在使用 angular 学习 ionic。
我创建了一个登录表单:
<form [formGroup]="login">
<ion-item>
<ion-label>
<ion-icon android="android-contacts" name="contacts"></ion-icon>
</ion-label>
<ion-input type="text" value="" name="username" [formControlName]="'username'" ></ion-input>
</ion-item>
<ion-item>
<ion-label>
<ion-icon android="android-unlock" md="md-unlock"></ion-icon>
</ion-label>
<ion-input type="password" value="" name="password" [formControlName]="'password'" placeholder="Password"></ion-input>
</ion-item>
</form>
<button ion-button full (click)="onLoginClick()" [disabled]="login.valid" >LOGIN</button>
在这里我用控件声明了表单组:
constructor(public fb: FormBuilder, public authService: ApiAuthProvider, public altCtrl: AlertController, public navCtrl: NavController,
public navParams: NavParams) {
this.login = fb.group({
username: new FormControl(['u', Validators.required]),
password: new FormControl(['p', Validators.required])
})
}
ionic serve
处没有错误,但是登录按钮没有被禁用,点击登录按钮时无法读取我在用户名输入中输入的内容:
onLoginClick(){
console.log(this.login['username']);
}
结果总是显示undefined
。
顺便说一句,在纯 Angular 应用程序中使用 ionic 中的表单构建器是一样的吗?
您必须像
一样访问表单控件值onLoginClick(){
console.log(this.login.get('username').value);
}
并且您还试图在表单有效时禁用它。你应该检查无效
<button ion-button full (click)="onLoginClick()" [disabled]="login.invalid" >LOGIN</button>
编辑:
以这种方式修改表单控件参数:您将它们作为数组传递。它们应该是两个独立的参数。
this.login = fb.group({
username: new FormControl('u', Validators.required),
password: new FormControl('p', Validators.required)
})
如果您有多个验证器,例如
,您可以添加验证器数组new FormControl('u', [Validators.required, Validators.maxlength])
您可以使用
获取表单的值this.login.value
;
如果您在 html 中使用它,请这样做。
{{login.value | json}}
或者您可以使用\
获取特定控件的值this.login.get('controlName).value;