gpt4 book ai didi

带有模式的 Angular Material url 验证

转载 作者:行者123 更新时间:2023-12-02 14:57:59 25 4
gpt4 key购买 nike

你好,

我正在使用 Angular Material,我创建了一个表单字段,我想验证我的 url,但它不起作用。我尝试使用电子邮件,它正在工作。我还希望在我输入有效的 url 之前禁用该按钮:

这是我的代码:

export class StartComponent implements OnInit {
searchValue: string;
url: any;
public reg = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;

constructor() { }
ngOnInit() {
this.url = new FormControl('', [Validators.required, Validators.pattern(this.reg)]);
this.getErrorMessage();
}
getErrorMessage() {
return this.url.hasError('required') ? 'You must enter a value' :
this.url.hasError('email') ? 'Not a valid url' :
'';
}
}

HTML

<mat-card class="searchbox">
<mat-form-field>
<input matInput placeholder="Enter your url" [formControl]="url" required>
<mat-error *ngIf="url.invalid">{{getErrorMessage()}}</mat-error>
</mat-form-field>
<!--Here button should be disabled if url not valid and until there is something entered-->
<button mat-stroked-button color="warn">GO</button>
</mat-card>

Here是 stackblitz 上的应用程序

最佳答案

像这样尝试:

DEMO

<mat-card class="searchbox">
<mat-form-field>
<input (focus)="markTouched()" matInput placeholder="Enter your url" [formControl]="url" required>
<mat-error *ngIf="url.hasError('required')">
Url required
</mat-error>
<mat-error *ngIf="url.hasError('pattern')">
Url Pattern Invalid
</mat-error>
</mat-form-field>
<!--Here button should be disabled if url not valid and until there is something entered-->

<button [disabled]="url.invalid" mat-stroked-button color="warn">GO</button>
</mat-card>

{{url.errors | json}}

TS:

public myreg = /(^|\s)((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi

url = new FormControl('', [Validators.required, Validators.pattern(this.myreg)]);

markTouched() {
this.url.markAsTouched();
this.url.updateValueAndValidity();
}

关于带有模式的 Angular Material url 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52017171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com