2017-07-17 48 views
2

我想有输入,在ngFor循环正则表达式的要求,但如预期,当我把一些不符合要求的模式我没有看到错误消息。角2 NgFor模式错误信息不显示

“测试”就不会被挡住,并<div *ngIf="id?.hasError('pattern')">从不显示,甚至当我输入了错误的模式。我可以看到输入,因为我使用的材料设计与行强调输入变为红色的颜色,但我没有看到关于错误信息的任何更改将失败。

这是我的时刻代码:

(该键管我是一个自定义的管道,因为项目是由对象的对象,从而使所包含的对象分解成键/值对)

<div *ngFor="let item of items | keys"> 

    <md-input-container> 
    <input 
     mdInput 
     placeholder={{item.placeholder}} 
     name={{item.name}} 
     pattern="\d{7}" 
     [(ngModel)]="item.currentValue" 
     #id="ngModel" 
    > 
    </md-input-container> 

    <div 
    [hidden]="id?.valid || id?.pristine" 
    > 
    <p>Test</p> 
    <div *ngIf="id?.hasError('pattern')"> 
     Pattern should be xxxxxxx 
    </div> 
    </div> 

</div> 
+1

我已经告诉过你你的模式是错误的。如果你需要匹配一个7位数的字串,只是用'“\ d {7}”'。或者,如果它可以为空' “(?:\ d {7})?”'。 '[\ d {7}] *'匹配0个或更多个字符,即数字,{','7'或'}'。 –

+0

即使在将模式更改为“\ d {7}”之后,我仍然很欣赏这些提示,但当输入未通过验证时,我仍然遇到与未隐藏/显示的消息相同的问题。 – gv0000

回答

0

试着将name={{item.name}}更改为name="id"

0

尝试在接下来的方式:

<div *ngFor="let item of items | keys"> 

<md-input-container> 
<input 
    mdInput 
    placeholder={{item.placeholder}} 
    name={{item.name}} 
    pattern="\d{7}" 
    [(ngModel)]="item.currentValue" 
    #id="ngModel" 
> 
</md-input-container> 

<div [hidden]="!displayValid(id)"> 
<p>Test</p>   
     Pattern should be xxxxxxx 
</div> 
</div> 

而且这个有趣的组件的.ts文件:

displayValid(inputRef: any): boolean { 
     let errors: any = inputRef.errors; 

     return errors && errors.pattern; 
}