У меня есть реактивная форма в модальном всплывающем окне, но когда я впервые открываю модальное поле, обязательное поле имеет фокус. Когда я нажимаю на кнопку закрытия, проверка запускается (я думаю, что теряю фокус), и отображает необходимое сообщение проверки поля, но кнопка не нажимает ie. код за кнопкой не запускается. Если вы нажмете на нее еще раз, все будет работать нормально.
Это соответствующие биты файла TS:
ngOnInit() {
this.addPaymentForm = this.formBuilder.group({
jobId: ['', [Validators.required, Validators.maxLength(9)]],
grossAmount: ['', [Validators.required, Validators.max(10000), Validators.min(-10000)]]
});
}
get f() { return this.addPaymentForm.controls; }
close() {
this.activeModal.close({ dataModified: false });
}
И это html:
<form [formGroup]="addPaymentForm" (ngSubmit)="submit()">
<label for="jobId">Job Id</label>
<input type="number" id="jobId" class="form-control" formControlName="jobId" required>
<div *ngIf="f.jobId.invalid && (f.jobId.dirty || f.jobId.touched)" class="alert alert-danger mt-2">
<div *ngIf="f.jobId.errors.required">
Job Id is required
</div>
<div *ngIf="f.jobId.errors.maxlength">
Invalid Job Id
</div>
</div>
<label for="grossAmount">Gross Amount</label>
<input id="grossAmount" type="number" class="form-control" formControlName="grossAmount" required>
<div *ngIf="f.grossAmount.invalid && (f.grossAmount.dirty || f.grossAmount.touched)"
class="alert alert-danger mt-2">
<div *ngIf="f.grossAmount.errors.required">
Gross Amount is required
</div>
<div *ngIf="f.grossAmount.errors.max || f.grossAmount.errors.min">
Invalid Gross Amount
</div>
</div>
<button type="button" class="btn btn-outline-dark" [disabled]="submitting" (click)="close()">Close</button>
<button type="submit" class="btn btn-primary"
[disabled]="!addPaymentForm.valid || !jobDetail || submitting">{{ submitting ? "Please wait" : "Save"}}</button>
</div>
</form>
Я пытался переместить кнопку закрытия за пределы тегов формы, но это не имеет никакого значения.
РЕДАКТИРОВАТЬ: ОК. Я создал стек для бликов, чтобы продемонстрировать проблему. https://stackblitz.com/edit/angular-ng-bootstrap-modal-content-4e9fac Кажется, что он работает лучше, чем мой настоящий код, хотя поле JobId не фокусируется автоматически на этом примере, поэтому, пожалуйста, нажмите на поле JobId, когда появится модальное окно, чтобы смоделировать мою ситуацию. Не уверен, почему поле в моем коде находится в фокусе, я думаю, что это связано с разницей версий с ng- bootstrap, возможно, если бы я мог изменить это, тогда это не было бы проблемой.