typescript - Erro TS2531: objeto possivelmente nulo em formulários reativos do Angular
Oi, eu tentei fazer a validação de formulário reativo no Angular 11, mas está mostrando o seguinte erro no terminal.
erro TS2531: o objeto possivelmente é nulo.
meu código em signup.component.ts
import {FormGroup, FormControl, Validators} from '@angular/forms';
form = new FormGroup({
firstName: new FormControl('',Validators.required)
})
get f()
{
return this.form.controls;
}
em signup.component.html
<form role="form" [formGroup]="form">
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" formControlName="firstName" [ngClass]="{'is-invalid':form.get('firstName').touched && form.get('firstName').invalid}">
<div *ngIf="f.firstName.touched && f.firstName.invalid">
<small class="text-danger" *ngIf="f.firstName.errors.required">
Name is required!
</div>
</div>
</form>
quando eu executo está mostrando erro em
<small class="text-danger" *ngIf="f.firstName.errors.required"> Nome é obrigatório!
erro TS2531: o objeto possivelmente é nulo.
Resposta #1
O objeto f.firstName.errors pode ser nulo. Use o operador de navegação segura ?:
*ngIf="f.firstName.errors?.required"
Resposta #2
Para a versão do Angular ^14.0, isso pode ser usado:
form.controls['firstName'].errors?.['required']
and
form.controls['firstName'].errors?.['minlength']
