Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 带模式的角度材质url验证_Angular_Typescript - Fatal编程技术网

Angular 带模式的角度材质url验证

Angular 带模式的角度材质url验证,angular,typescript,Angular,Typescript,你好 我正在使用Angular材质,我已经创建了一个表单字段,我想验证我的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-z

你好

我正在使用Angular材质,我已经创建了一个表单字段,我想验证我的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>
<mat-error *ngIf="form.get('url').hasError('pattern')">Invalid URL format</mat-error>

{{getErrorMessage()}}
去
stackblitz上的应用程序是否可用

试着这样做:

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>
<mat-error *ngIf="form.get('url').hasError('pattern')">Invalid URL format</mat-error>
您只需使用内置的URL API
urlValidator如果提供的控件的url值有效,则返回null,否则返回“模式”错误。

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>
<mat-error *ngIf="form.get('url').hasError('pattern')">Invalid URL format</mat-error>
您只需使用内置的URL API

urlValidator如果提供的控件的url值有效,则方法返回null,否则返回“模式”错误。

您好,但如果您第一次输入且url无效,您不会立即收到无效urlyes的无效消息,因为它会在触摸时激活。如果你想的话,你需要将它设置为触动。这取决于你。首先激活(模糊)。非常感谢您的支持。这正是我所需要的。但我猜,如果你能把自己的函数写进handleyes,那就容易多了。你能写多少取决于验证的次数。您还可以创建公共消息模板以进行大量验证。它不允许url:
http://www.google.com
Hi,这样更好,但如果您第一次输入时url无效,您不会立即收到无效url的无效消息Yes,因为它会在触摸时激活。如果你想的话,你需要将它设置为触动。这取决于你。首先激活(模糊)。非常感谢您的支持。这正是我所需要的。但我猜,如果你能把自己的函数写进handleyes,那就容易多了。你能写多少取决于验证的次数。您还可以创建公共消息模板以进行大量验证。它不允许url:
http://www.google.com
您可以尝试创建一个
URL
,如果成功则返回true,如果抛出异常则返回false,而不是使用regex。当然,您需要编写自己的验证器,而不是使用regex,您可以尝试创建
URL
,如果成功则返回true,如果抛出异常则返回false。当然,您需要编写自己的验证器。