2017-07-14 65 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"