typescript - Kako omogućiti gumb koristeći reaktivne forme u Angular 2?
Imam ulazno polje i gumb. Kada polje nije prazno, gumb bi trebao biti omogućen. Ali u mom slučaju već prosljeđujem vrijednost ulaza, pa bi trebao biti omogućen, ali to se ne događa. Omogućuje se tek kada upišem nešto u ulazno polje. Ima li informacija o tome kako to postići. Ispod je moj kod.
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);
}
}
evo mog HTML koda
<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>
Odgovor #1
Uklonite [value]="hello" iz svog unosa jer bi to trebalo ići u new FormControl(value, [validators], [asyncValidators]) za reaktivne obrasce.
nešto poput:
ngOnInit() {
this.userForm = new FormGroup({
firstName: new FormControl(this.hello, [<any>Validators.required, <any>Validators.minLength(5)])
});
}
Odgovor #2
Jednostavan način je koristiti reaktivne obrasce, ovako:
- korak1: uvezi ReactiveForm, FormBuilder, Validators
- korak 2: deklarirajte objekt FormGroup i injektirajte form builder u konstruktor
- korak3: inicijalizirajte vašu grupu obrazaca
- korak 4: korištenje reaktivnog obrasca na isti način kao i prije, ali s nekim promjenama
Kod :
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>
