|
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=" [email protected]"
|
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