2017-07-14 69 views
1

我想在ngFor循環中有正則表達式要求的輸入,但我得到「無法讀取屬性'有效'的未定義」錯誤我正在使用它作爲加載頁面時彈出的錯誤消息。Angular 2 NgFor正則表達式消息錯誤 - [(ngModel)]工作,但ngModel未定義

這是我的時刻代碼:

(該鍵管我是一個自定義的管道,因爲項目是由對象的對象,從而使所包含的對象分解成鍵/值對)

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

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

    <div 
    [hidden]="id.valid || id.pristine" 
    > 
    <div [hidden]="!id.hasError('pattern')"> 
     *Describe required pattern here* 
    </div> 
    </div> 

</div> 

從我讀過的一些教程(如this one)我會想到這會工作,但我顯然缺少的東西。任何幫助將不勝感激,謝謝!

編輯 因爲有人問這裏是關鍵管道。這是一個基本的管道,等等這些都可以在interwebs發現:

transform(value): any { 
    const keys = []; 
    for (const key in value) { 
     keys.push({key: key, value: value[key]}); 
    } 

    return keys; 
    } 
+1

你想驗證一個7位數?使用'pattern =「[0-9] {7}」' –

+0

我實際上想驗證數字和/或字母,但是謝謝你! – gv0000

+1

我認爲看到「keys」管道實現也會有所幫助 – seveves

回答

1

嘗試使用Elvis操作符,就像這樣:[hidden]="id?.valid || id?.pristine"