Helo,
I am working with Angular Material and I have created an form field and I want to validate my url but it is not working. I tried with email and it is working. I want also that the button should be disabled until I enter a valid url:
Here is my code:
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 is the the app at stackblitz
URLand return true if it succeeds or false, if it throws an exception. You'd need to write your own validator then, of course.