[英]how to validate website address using angular 5
我想驗證角度5中的網址無法正常工作。
<input type="url" name="url" id="url" ngModel pattern="https?://.+">
<div *ngIf="url.errors && (url.dirty || url.touched)" class="alert alert-danger">
<div [hidden]="!url.errors.pattern">
</div>
</div>
要以反應形式驗證URL / Web地址,可以遵循以下方法,對窗體控件使用Validators.pattern
。
const urlRegex = '(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?';
this.hospitalForm = this.fb.group({
Website: ['', Validators.pattern(urlRegex)],
});
要以模板驅動的形式驗證URL / Web地址,您應該創建一個自定義的Validator指令,如下所示
@Directive({
selector: '[appPattern]',
providers: [{provide: NG_VALIDATORS, useExisting: PatternValidatorDirective, multi: true}]
})
export class PatternValidatorDirective implements Validator {
@Input('appPattern') pattern: string;
validate(control: AbstractControl): {[key: string]: any} | null {
return this.pattern ? this.patternValidator(new RegExp(this.pattern, 'i'))(control)
: null;
}
patternValidator(nameRe: RegExp): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const regextest = nameRe.test(control.value);
return (!regextest) ? {'apppattern': {value: control.value}} : null;
};
}
}
在輸入中,應將appUrl與regex一起使用:
<input type="url" name="url" id="url" ngModel appPattern="(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})[/\\w .-]*/?">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.