Angular 仅当值与角度4+中的模式匹配时,才执行(单击)或(键控)事件方法;

Angular 仅当值与角度4+中的模式匹配时,才执行(单击)或(键控)事件方法;,angular,design-patterns,Angular,Design Patterns,下面是HTML代码,只有当输入字段值与模式匹配时才会触发keyup <input (keyup)="checkPatternMatch(ProjectName)" type="text" #ProjectName="ngModel" name="pro-name" class="form-control" pattern=".*\S+.*"> pattern=".*\S+.*" 模式=“.*\S+.*” 此模式至少应包含一个字符(不考虑空间为字符)。将模板变量作为函数中的参

下面是HTML代码,只有当输入字段值与模式匹配时才会触发keyup

<input (keyup)="checkPatternMatch(ProjectName)" type="text" #ProjectName="ngModel" name="pro-name" class="form-control" pattern=".*\S+.*">


pattern=".*\S+.*"

模式=“.*\S+.*”

此模式至少应包含一个字符(不考虑空间为字符)。

将模板变量作为函数中的参数传递。

(keyup)="checkPatternMatch(ProjectName)"
功能代码

checkPatternMatch(Name)

  {

    if(Name.errors == null)

        // code...

  }

如果用户在输入字段内留出空间,则会触发keyup事件,但在功能中,if条件将失败(因为模式不匹配)。因此不会执行if块中的代码。

将模板变量作为参数传递到函数中

(keyup)="checkPatternMatch(ProjectName)"
功能代码

checkPatternMatch(Name)

  {

    if(Name.errors == null)

        // code...

  }
如果用户在输入字段内留出空间,则会触发keyup事件,但在功能中,if条件将失败(因为模式不匹配)。因此if块中的代码将不会执行。

请尝试以下操作

在这里,我添加了一个条件,它将检查是否没有错误,然后只调用函数
checkPatternMatch

<input (keyup)="projectName.errors ? '' : checkPatternMatch(ProjectName)" type="text" #projectName="ngModel" [(ngModel)]="projectValue" name="projectName" class="form-control" pattern=".*\S+.*">
查找。

试试这个

在这里,我添加了一个条件,它将检查是否没有错误,然后只调用函数
checkPatternMatch

<input (keyup)="projectName.errors ? '' : checkPatternMatch(ProjectName)" type="text" #projectName="ngModel" [(ngModel)]="projectValue" name="projectName" class="form-control" pattern=".*\S+.*">
查找。

诀窍是传入一个函数,当模式与输入值匹配时触发该函数

doSomething(){
log(“匹配模式”);
}

import{Directive,Input,EventEmitter,ElementRef,HostListener}来自“@angular/core”;
@指示({
选择器:“[appMatchPattern]”
})
导出类匹配模式指令{
@Input()appMatchPattern:函数;
模式:RegExp;
el:HTMLInputElement
构造函数(专用er:ElementRef){
this.el=er.nativeElement;
this.pattern=newregexp(this.el.getAttribute('pattern');
}
@主机侦听器('keyup')
onKeyup(){
if(此.el.value.match(此.pattern)){
这个.appMatchPattern();
}
}
}

诀窍是传入一个函数,当模式与输入值匹配时触发该函数

doSomething(){
log(“匹配模式”);
}

import{Directive,Input,EventEmitter,ElementRef,HostListener}来自“@angular/core”;
@指示({
选择器:“[appMatchPattern]”
})
导出类匹配模式指令{
@Input()appMatchPattern:函数;
模式:RegExp;
el:HTMLInputElement
构造函数(专用er:ElementRef){
this.el=er.nativeElement;
this.pattern=newregexp(this.el.getAttribute('pattern');
}
@主机侦听器('keyup')
onKeyup(){
if(此.el.value.match(此.pattern)){
这个.appMatchPattern();
}
}
}

只需将有效性标志传递到函数中并在组件中处理即可

app.component.html

<input type="text" (keyup)="exec(projectName.valid)" #projectName="ngModel" pattern=".*\S+.*">

只需将validity标志传递到函数中,并在组件中处理它

app.component.html

<input type="text" (keyup)="exec(projectName.valid)" #projectName="ngModel" pattern=".*\S+.*">