Вы используете reactive form
и Template-driven
вместе.
Использовать только Reactive form.
Делайте изменения в ваших файлах. (изменить согласно вашему требованию).
Component.Html
<form [formGroup]="pinForm">
<div class="form-group">
<label for="defaultPin">Default Pin</label>
<input type="text" name="defaultPin" class="form-control" id="defaultPin" aria-describedby="defaultPin" placeholder="Please enter your old Pin"
formControlName="defaultPin" />
<span class="text-danger" *ngIf="pinForm.controls['defaultPin'].hasError('required') && (pinForm.controls['defaultPin'].dirty || pinForm.controls['defaultPin'].touched)">This field is required</span>
</div>
</form>
Component.ts
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
export class AppComponent {
pinForm: FormGroup;
constructor(fb: FormBuilder) {
this.pinForm = fb.group({
'defaultPin': [null, Validators.required],
});
}
}
module.ts
// Import ReactiveFormModule in your module.ts file
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [ FormsModule, ReactiveFormsModule ],
Если проблема не устранена, см. Stackblitz