Skip to content

Commit 626f645

Browse files
author
majid noureddine
committed
reactive form validation
1 parent dd5b10c commit 626f645

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

src/app/new-user/new-user.component.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
<option value="jus de mangue">Jus de mangue</option>
2121
</select>
2222
</div>
23-
<button type="submit" class="btn btn-primary">Soumettre</button>
23+
<div formArrayName="hobbies">
24+
<h3>Vos hobbies</h3>
25+
<div class="form-group" *ngFor="let hobbyControl of getHobbies().controls; let i = index">
26+
<input type="text" class="form-control" [formControlName]="i">
27+
</div>
28+
<button type="button" class="btn btn-success" (click)="onAddHobby()">Ajouter</button>
29+
<button type="button" class="btn btn-danger" (click)="onRemoveHobby()">Supprimer</button>
30+
</div>
31+
<button type="submit" class="btn btn-primary" [disabled]="userForm.invalid">Soumettre</button>
2432
</form>
2533
</div>

src/app/new-user/new-user.component.ts

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, OnInit } from '@angular/core';
2-
import {FormBuilder, FormGroup} from '@angular/forms';
2+
import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
33
import {UserService} from '../services/user.service';
44
import {Router} from '@angular/router';
55
import {User} from '../models/User.model';
@@ -24,10 +24,11 @@ export class NewUserComponent implements OnInit {
2424

2525
initForm() {
2626
this.userForm = this.formBuilder.group({
27-
firstName: '',
28-
lastName: '',
29-
email: '',
30-
drinkPreference: ''
27+
firstName: ['', Validators.required],
28+
lastName: ['', Validators.required],
29+
email: ['', [Validators.required, Validators.email]],
30+
drinkPreference: ['', Validators.required],
31+
hobbies: this.formBuilder.array([])
3132
});
3233
}
3334

@@ -37,9 +38,23 @@ export class NewUserComponent implements OnInit {
3738
formValue['firstName'],
3839
formValue['lastName'],
3940
formValue['email'],
40-
formValue['drinkPreference']
41+
formValue['drinkPreference'],
42+
formValue['hobbies'] ? formValue['hobbies'] : []
4143
);
4244
this.userService.addUser(newUser);
4345
this.router.navigate(['/users']);
4446
}
47+
48+
getHobbies(): FormArray {
49+
return this.userForm.get('hobbies') as FormArray;
50+
}
51+
52+
onAddHobby() {
53+
const newHobbyControl = this.formBuilder.control(null, Validators.required);
54+
this.getHobbies().push(newHobbyControl);
55+
}
56+
57+
onRemoveHobby() {
58+
this.getHobbies().removeAt(-1);
59+
}
4560
}

0 commit comments

Comments
 (0)