Skip to content

Commit 98eee5c

Browse files
committed
Improved error display in form
1 parent 7d74217 commit 98eee5c

2 files changed

Lines changed: 19 additions & 6 deletions

File tree

src/app/login/component/login-form/login-form.component.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ <h4 class="card-header">Login</h4>
66
<div class="form-group">
77
<label for="username">Username</label>
88
<input type="text" formControlName="username" class="form-control"
9-
[ngClass]="{ 'is-invalid': isFormInvalid() && form.get('username')?.errors }" />
10-
<div *ngIf="isFormInvalid() && form.get('username')?.hasError('required')" class="invalid-feedback">
9+
[ngClass]="{ 'is-invalid': isFormInvalid('username') }" />
10+
<div *ngIf="isFormInvalid('username') && form.get('username')?.hasError('required')" class="invalid-feedback">
1111
Username is required
1212
</div>
1313
</div>
1414
<div class="form-group">
1515
<label for="password">Password</label>
1616
<input type="password" formControlName="password" class="form-control"
17-
[ngClass]="{ 'is-invalid': isFormInvalid() && form.get('password')?.errors }" />
18-
<div *ngIf="isFormInvalid() && form.get('password')?.hasError('required')" class="invalid-feedback">
17+
[ngClass]="{ 'is-invalid': isFormInvalid('password') }" />
18+
<div *ngIf="isFormInvalid('password') && form.get('password')?.hasError('required')" class="invalid-feedback">
1919
Password is required
2020
</div>
2121
</div>

src/app/login/component/login-form/login-form.component.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,21 @@ export class LoginFormComponent {
3030
}
3131
}
3232

33-
public isFormInvalid(): boolean {
34-
return this.form.invalid && (this.form.dirty || this.form.touched);
33+
public isFormInvalid(field: string): boolean {
34+
let invalid: boolean;
35+
36+
if(this.form.invalid) {
37+
const formField = this.form.get(field);
38+
if(formField){
39+
invalid = (formField?.dirty || formField?.touched) && (formField?.errors != null);
40+
} else {
41+
invalid = false;
42+
}
43+
} else {
44+
invalid = false;
45+
}
46+
47+
return invalid;
3548
}
3649

3750
public canLogin(): boolean {

0 commit comments

Comments
 (0)