|
1 | 1 | <div class="container"> |
2 | 2 | <div class="row"> |
3 | 3 | <div class="col-md-8"> |
4 | | - <form novalidate> |
| 4 | + <form [formGroup]="form" (ngSubmit)="signUp(form.value)" novalidate> |
5 | 5 | <div class="card card-signup"> |
6 | 6 | <div class="card-header">Profile</div> |
7 | 7 | <div class="card-block"> |
8 | 8 | <div class="form-group row"> |
9 | 9 | <label for="inputEmail" class="col-sm-3 col-form-label">Email*</label> |
10 | 10 | <div class="col-sm-9"> |
11 | 11 | <input type="email" class="form-control" id="inputEmail3" placeholder="username@domain.com" |
12 | | - name="email" required minlength="5"> |
| 12 | + formControlName="email" required minlength="5"> |
13 | 13 | </div> |
14 | 14 | </div> |
15 | 15 | <div class="form-group row"> |
16 | 16 | <label for="inputFirstName" class="col-sm-3 col-form-label">First Name*</label> |
17 | 17 | <div class="col-sm-9"> |
18 | 18 | <input type="text" class="form-control" id="inputFirstName" placeholder="" |
19 | | - name="firstName" required maxlength="25"> |
| 19 | + formControlName="firstName" pattern="[A-Za-z .]*" required maxlength="25"> |
20 | 20 | </div> |
21 | 21 | </div> |
22 | 22 | <div class="form-group row"> |
23 | 23 | <label for="inputLastName" class="col-sm-3 col-form-label">Last Name</label> |
24 | 24 | <div class="col-sm-9"> |
25 | 25 | <input type="text" class="form-control" id="inputLastName" placeholder="" |
26 | | - name="lastName" maxlength="25"> |
| 26 | + formControlName="lastName" pattern="[A-Za-z .]*" maxlength="25"> |
27 | 27 | </div> |
28 | 28 | </div> |
29 | 29 | <fieldset class="form-group row"> |
30 | 30 | <legend class="col-form-legend col-sm-3">Gender</legend> |
31 | 31 | <div class="col-sm-9 form-radio"> |
32 | 32 | <label class="custom-control custom-radio"> |
33 | | - <input id="inputMale" name="gender" type="radio" class="custom-control-input"> |
| 33 | + <input id="inputMale" formControlName="gender" type="radio" class="custom-control-input" value="Male"> |
34 | 34 | <span class="custom-control-indicator"></span> |
35 | 35 | <span class="custom-control-description">Male</span> |
36 | 36 | </label> |
37 | 37 | <label class="custom-control custom-radio"> |
38 | | - <input id="inputFemale" name="gender" type="radio" class="custom-control-input"> |
| 38 | + <input id="inputFemale" formControlName="gender" type="radio" class="custom-control-input" value="Female"> |
39 | 39 | <span class="custom-control-indicator"></span> |
40 | 40 | <span class="custom-control-description">Female</span> |
41 | 41 | </label> |
|
44 | 44 | <div class="form-group row"> |
45 | 45 | <div class="offset-sm-3 col-sm-9"> |
46 | 46 | <label class="custom-control custom-checkbox"> |
47 | | - <input type="checkbox" name="notrobot" class="custom-control-input" required> |
| 47 | + <input type="checkbox" formControlName="notrobot" class="custom-control-input" required> |
48 | 48 | <span class="custom-control-indicator"></span> |
49 | 49 | <span class="custom-control-description">I am not a Robot*</span> |
50 | 50 | </label> |
51 | 51 | </div> |
52 | 52 | </div> |
53 | 53 | </div> |
54 | 54 | </div> |
55 | | - <div class="card card-signup"> |
| 55 | + <div class="card card-signup" formGroupName="address"> |
56 | 56 | <div class="card-header">Address</div> |
57 | 57 | <div class="card-block"> |
58 | 58 | <div class="form-group row"> |
59 | 59 | <label for="inputAddressLine1" class="col-sm-3 col-form-label">Address Line 1*</label> |
60 | 60 | <div class="col-sm-9"> |
61 | 61 | <input type="text" class="form-control" id="inputAddressLine1" placeholder="Room/Flat/Plot No. Locality" |
62 | | - name="addressLine1" required> |
| 62 | + formControlName="addressLine1" required> |
63 | 63 | </div> |
64 | 64 | </div> |
65 | 65 | <div class="form-group row"> |
66 | 66 | <label for="inputAddressLine2" class="col-sm-3 col-form-label">Address Line 2</label> |
67 | 67 | <div class="col-sm-9"> |
68 | 68 | <input type="text" class="form-control" id="inputAddressLine2" placeholder="Street, Area" |
69 | | - name="addressLine2"> |
| 69 | + formControlName="addressLine2"> |
70 | 70 | </div> |
71 | 71 | </div> |
72 | 72 | <div class="row"> |
73 | 73 | <div class="form-group"> |
74 | 74 | <label for="inputCity" class="col-sm-3 col-form-label">City*</label> |
75 | 75 | <div class="col-sm-4"> |
76 | 76 | <input type="text" class="form-control" id="inputCity" placeholder="City" |
77 | | - name="city" required> |
| 77 | + formControlName="city" required> |
78 | 78 | </div> |
79 | 79 | </div> |
80 | 80 | <div class="form-group"> |
81 | 81 | <label for="inputZipCode" class="col-sm-1 col-form-label">Zip*</label> |
82 | 82 | <div class="col-sm-4"> |
83 | 83 | <input type="number" class="form-control" id="inputZipCode" placeholder="Zip code" |
84 | | - name="zipCode" required> |
| 84 | + formControlName="zipCode" required> |
85 | 85 | </div> |
86 | 86 | </div> |
87 | 87 | </div> |
88 | 88 | <div class="form-group row" style="margin-top:1.2rem"> |
89 | 89 | <label for="inputLandmark" class="col-sm-3 col-form-label">Landmark</label> |
90 | 90 | <div class="col-sm-9"> |
91 | 91 | <input type="text" class="form-control" id="inputLandmark" placeholder="Landmark" |
92 | | - name="landmark" > |
| 92 | + formControlName="landmark" > |
93 | 93 | </div> |
94 | 94 | </div> |
95 | 95 | <fieldset class="form-group row"> |
96 | 96 | <legend class="col-form-legend col-sm-3">Type</legend> |
97 | 97 | <div class="col-sm-9 form-radio"> |
98 | 98 | <label class="custom-control custom-radio"> |
99 | | - <input id="inputResidence" name="addressType" type="radio" class="custom-control-input"> |
| 99 | + <input id="inputResidence" formControlName="addressType" type="radio" class="custom-control-input" value="Residence"> |
100 | 100 | <span class="custom-control-indicator"></span> |
101 | 101 | <span class="custom-control-description">Residence</span> |
102 | 102 | </label> |
103 | 103 | <label class="custom-control custom-radio"> |
104 | | - <input id="inputOffice" name="addressType" type="radio" class="custom-control-input"> |
| 104 | + <input id="inputOffice" formControlName="addressType" type="radio" class="custom-control-input" value="Office"> |
105 | 105 | <span class="custom-control-indicator"></span> |
106 | 106 | <span class="custom-control-description">Office</span> |
107 | 107 | </label> |
|
111 | 111 | <div class="form-group"> |
112 | 112 | <label for="inputCountry" class="col-sm-3 col-form-label">Country</label> |
113 | 113 | <div class="col-sm-6"> |
114 | | - <select class="custom-select" id="inputCountry" name="country"> |
| 114 | + <select class="custom-select" id="inputCountry" formControlName="country"> |
115 | 115 | <option value="" selected>Select Country</option> |
116 | 116 | <option value="ALA">Åland Islands</option> |
117 | 117 | <option value="ALB">Albania</option> |
|
367 | 367 | </div> |
368 | 368 | </div> |
369 | 369 | </div> |
370 | | - <div class="form-group row"> |
| 370 | + <div class="row"> |
371 | 371 | <div class="offset-sm-2 col-sm-9"> |
372 | | - <button type="submit" class="btn btn-primary">Sign up</button> |
| 372 | + <button type="submit" class="btn btn-primary" [disabled]="!form.valid">Sign up</button> |
| 373 | + Your form is {{form.valid ? 'valid' : 'invalid'}} |
373 | 374 | </div> |
374 | 375 | </div> |
375 | 376 | </form> |
376 | 377 | </div> |
377 | | - <div class="col-md-4 jumbotron"></div> |
| 378 | + <div class="col-md-4 jumbotron">{{ form.value | json }}</div> |
378 | 379 | </div> |
379 | 380 | </div> |
0 commit comments