如何在 angular 2 中启用使用反应形式的按钮?
How to enable button using reactive forms in angular 2?
我有一个输入字段和一个 button.When 该字段不为空按钮应该是 enabled.But 在我的例子中我已经在传递输入 value.so 它应该被启用但是这不是 happening.It 当我在输入中输入任何内容时启用 field.Any 关于如何实现的信息 it.below 是我的代码
export class SignupFormComponent implements OnInit {
userForm: FormGroup;
submitted: boolean;
hello = "hello world";
ngOnInit() {
this.userForm = new FormGroup({
firstName: new FormControl('',[<any>Validators.required, <any>Validators.minLength(5)])
});
}
onSubmit({ value, valid }: { value: userForm, valid: boolean }) {
this.submitted = true;
console.log(value,valid);
}
}
这是我的 html 代码
<form [formGroup]="userForm" (ngSubmit)="onSubmit(userForm)" validate>
<div class="form-group">
<label>First Name</label>
<input type="text" class="form-control" formControlName="firstName" [value]="hello">
</div>
<button type="submit" class="btn btn-primary" [disabled]="userForm.invalid">Submit </button>
</form>
从您的输入中删除 [value]="hello",因为它们应该在 new FormControl(value, [validators], [asyncValidators])
中用于反应形式。
类似于:
ngOnInit() {
this.userForm = new FormGroup({
firstName: new FormControl(this.hello, [<any>Validators.required, <any>Validators.minLength(5)])
});
}
最简单的方法是使用响应式表单,如下所示:
- 第一步:导入 ReactiveForm、FormBuilder、Validators
- 第 2 步:声明 FormGroup 对象并将表单生成器注入构造函数
- 第 3 步:初始化您的表单组
- 第 4 步:以与您相同的方式使用反应形式,但有一些变化
代码:
export class SignupFormComponent implements OnInit {
userForm: FormGroup;
firstName: string;
constructor(private _formBuilder:FormBuilder){}
ngOnInit() {
this.userForm = this._formBuilder.group({
'firstName': ['',[Validators.required,Validators.minLength(5)]]
});
}
onSubmit() {
console.log(this.firstName);
}
}
HTML:
<form [formGroup]="userForm" (ngSubmit)="onSubmit()" name="userForm">
<div class="form-group">
<label>First Name</label>
<input type="text" [(ngModel)]="firstName" class="form-control" formControlName="firstName">
<p *ngIf="userForm.controls.firstName.invalid && (userForm.controls.firstName.dirty || userForm.controls.firstName.touched)"> Error message </p>
</div>
<button type="submit" class="btn btn-primary" [disabled]="userForm.invalid">Submit </button>
</form>
我有一个输入字段和一个 button.When 该字段不为空按钮应该是 enabled.But 在我的例子中我已经在传递输入 value.so 它应该被启用但是这不是 happening.It 当我在输入中输入任何内容时启用 field.Any 关于如何实现的信息 it.below 是我的代码
export class SignupFormComponent implements OnInit {
userForm: FormGroup;
submitted: boolean;
hello = "hello world";
ngOnInit() {
this.userForm = new FormGroup({
firstName: new FormControl('',[<any>Validators.required, <any>Validators.minLength(5)])
});
}
onSubmit({ value, valid }: { value: userForm, valid: boolean }) {
this.submitted = true;
console.log(value,valid);
}
}
这是我的 html 代码
<form [formGroup]="userForm" (ngSubmit)="onSubmit(userForm)" validate>
<div class="form-group">
<label>First Name</label>
<input type="text" class="form-control" formControlName="firstName" [value]="hello">
</div>
<button type="submit" class="btn btn-primary" [disabled]="userForm.invalid">Submit </button>
</form>
从您的输入中删除 [value]="hello",因为它们应该在 new FormControl(value, [validators], [asyncValidators])
中用于反应形式。
类似于:
ngOnInit() {
this.userForm = new FormGroup({
firstName: new FormControl(this.hello, [<any>Validators.required, <any>Validators.minLength(5)])
});
}
最简单的方法是使用响应式表单,如下所示:
- 第一步:导入 ReactiveForm、FormBuilder、Validators
- 第 2 步:声明 FormGroup 对象并将表单生成器注入构造函数
- 第 3 步:初始化您的表单组
- 第 4 步:以与您相同的方式使用反应形式,但有一些变化
代码:
export class SignupFormComponent implements OnInit {
userForm: FormGroup;
firstName: string;
constructor(private _formBuilder:FormBuilder){}
ngOnInit() {
this.userForm = this._formBuilder.group({
'firstName': ['',[Validators.required,Validators.minLength(5)]]
});
}
onSubmit() {
console.log(this.firstName);
}
}
HTML:
<form [formGroup]="userForm" (ngSubmit)="onSubmit()" name="userForm">
<div class="form-group">
<label>First Name</label>
<input type="text" [(ngModel)]="firstName" class="form-control" formControlName="firstName">
<p *ngIf="userForm.controls.firstName.invalid && (userForm.controls.firstName.dirty || userForm.controls.firstName.touched)"> Error message </p>
</div>
<button type="submit" class="btn btn-primary" [disabled]="userForm.invalid">Submit </button>
</form>