2017-09-13 67 views
1

我有一个搜索字段,显示下拉动态内容。我希望能够显示模式验证错误。下面是代码:角4 +角材2模板表格字段验证不起作用

<md-input-container class="search-container"> 
    <input mdInput 
     validateField 
     [(ngModel)]="currentSearchResult" 
     [disabled]="tdDisabled" 
     (keyup)="performSearch(currentSearchResult)" 
     [mdAutocomplete]="searchAuto" placeholder="{{'COMPANY.SEARCH' | translate}}"> 
    <md-error *ngIf="currentSearchResult.touched && currentSearchResult.invalid"> 
    <span *ngIf="currentSearchResult.errors.pattern"> 
     Invalid characters used. 
    </span> 
    </md-error> 
</md-input-container> 

我得到这个错误:

TypeError: Cannot read property 'touched' of undefined 
    at Object.eval [as updateDirectives] (SearchComponent.html:8) 
    at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:13058) 
    at checkAndUpdateView (core.es5.js:12238) 
    at callViewAction (core.es5.js:12603) 
    at execComponentViewsAction (core.es5.js:12535) 
    at checkAndUpdateView (core.es5.js:12244) 
    at callViewAction (core.es5.js:12603) 
    at execComponentViewsAction (core.es5.js:12535) 
    at checkAndUpdateView (core.es5.js:12244) 
    at callViewAction (core.es5.js:12603) 

指向这一行:

<md-error *ngIf="currentSearchResult.touched && currentSearchResult.invalid"> 

我不明白为什么没有定义他们的变量。我尝试使用ngModel name="currentSearchResult"#currentSearchResult="ngModel",但也给出了错误。

我错过了这个领域? 感谢

+0

可以提供您'.ts'文件? –

回答

2

试试这个语法(我取消了清晰度某些部分)

<md-input-container class="search-container"> 
    <input mdInput 
     [(ngModel)]="currentSearchResult" 
     required 
     name="myModel" 
     #myModel="ngModel"> 


    <md-error *ngIf="myModel.touched && myModel.invalid"> 
    <span *ngIf="myModel.errors.required"> 
     Invalid characters used. 
    </span> 
    </md-error> 
</md-input-container> 

DEMO

+1

@Swoox你可以有许多类型的错误,比如所需的,模式等等。因此,带'errors.required'的''可以指定那些错误类型。 –

+1

工程就像一个魅力!谢谢。 –

+0

非常欢迎您! :) – Vega