Я пытаюсь ввести некоторые данные в форме, но это не дает мне статус touched
. Поэтому при отправке сообщения обратно пользователю всегда будет возникать ошибка.
Я использую FormBuilder
в моем файле TS для хранения значений из HTML. Это дает мне эту ошибку независимо от того, введу я данные или нет.
Я потерян.
Ошибка
![](https://i.stack.imgur.com/6U20y.png)
firstName: FormControl {validator: ƒ, asyncValidator: ƒ, _onCollectionChange:
ƒ, pristine: true, touched: false, …}
Значение:
value: {firstName: "", .... }
Я пытался проверить pristine
в условии ngIf
, но это не так.
Вот мой HTML-код:
<form [formGroup]="formInfo" (ngSubmit)="validateForm()">
<label>First Name <input type="text" maxlength="35" />
<div *ngIf="submitted && formInfo.controls.firstName.errors" class="error">
<div *ngIf="(formInfo.controls.firstName.pristine) && (formInfo.controls.firstName.errors.required)">Your first
name is required.</div>
</div>
</label>
....
</form>
А вот мой код TypeScript:
// Class Attributes
formInfo: FormGroup;
submitted = false;
success = false;
constructor(private builder: FormBuilder) { }
// Form data as an object
ngOnInit() {
this.formInfo = this.builder.group({
firstName: ['', Validators.required],
....
});
}
// Validates the form
validateForm() {
this.submitted = true;
console.log(this);
console.log(this.formInfo);
if (this.formInfo.invalid) {
return;
}
this.success = true;
}
}
Я просто хочу, чтобы форма сказала, что вам нужно ввести значение, если пользователь этого не сделал. В противном случае сообщение об ошибке не будет.
Я добавил следующий код, чтобы посмотреть, есть ли четное значение в моем файле TS.
<form [formGroup]="formInfo" (ngSubmit)="validateForm()">
<label>First Name <input type="text" maxlength="35" />
<div *ngIf="submitted && formInfo.controls.firstName.errors" class="error">
<div *ngIf="(formInfo.controls.firstName.pristine) && (formInfo.controls.firstName.errors.required)">Your first
name is required.</div>
</div>
</label>
....
</form>
<!-- I added this -->
<div *ngIf="submitted">
<strong>First Name</strong>
<span>{{ formInfo.controls.firstName.value }}</span>
</div>
Кажется, что значение никогда не сохраняется в TS.