2017-07-17 45 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; 
}