У меня есть текстовое поле и кнопка.Ввод текстового поля является URL-адресом, и существует метод для проверки формата URL-адреса, который в этом примере isUrlFormatValid () .
Если isUrlFormatValid () завершается неудачей, то существуетсообщение об ошибке появляется внизу текстового поля, и кнопка становится пассивной и не может быть нажата.Но моя проблема заключается в том, что при первой загрузке страницы результат этого метода автоматически становится ложным, поэтому для пустого поля также появляется сообщение об ошибке.
<mat-card class="">
<mat-card-content fxLayout="row wrap" fxLayoutAlign="left" fxLayoutGap="15px">
<div>
<mat-form-field>
<mat-label>Enter link here</mat-label>
<input type="url" matInput [(ngModel)]="domainName">
</mat-form-field>
<mat-error *ngIf="isUrlFormatValid()">
Please enter the link in correct format
</mat-error>
</div>
</mat-card-content>
<div>
<button type="button" id="search" class="" [disabled]="isUrlFormatValid()"
(click)="addClicked()">Add Domain
</button>
</div>
</mat-card>
И определение метода в файле ts:
isUrlFormatValid() {
const pattern = /^((((https?)(:\/\/))?((www)\.)?)?|mailto:(\w+\.?\w+)\@)([a-z0-9]+\.[a-z0-9]+)+$/;
if (pattern.test(this.domainName)) {
return false;
}
return true;
}
если я изменяю строку в файле ts:
if (pattern.test(this.domainName))
на:
if (pattern.test(this.domainName) || this.domainName == null)
, тогда проблема с сообщением об ошибке решается, но эта кнопка времени активируется при запуске, еслия пишу что-то да, это работает, но когда страница загружается впервые, она становится активной.
Так как я могу решить эту проблему?