ExpressionChangedAfterChecked在输入但不单击

时间:2019-05-19 18:25:07

标签: angular angular7

在我的angular 7应用程序中,如果在输入字段中按Enter键却出现此错误,但如果单击搜索按钮,则不会得到此错误:

  

ExpressionChangedAfterItHaHasBeenCheckedError:检查表达式后,表达式已更改。上一个值:'igx-input-group--focused:true'。当前值:“ igx-input-group--focused:false”。

触发它的代码如下:

<igx-input-group>
    <label igxLabel for="search">Asset Search</label>
    <input #search igxInput type="text" class="form-control" id="search" [(ngModel)]="searchText"
           required (keyup.enter)="onSearchPressed()">
    <igx-hint>Search by S/N, Etag, barcode or RFID</igx-hint>
</igx-input-group>

<button class="btn btn-primary" (click)="onSearchPressed()" [disabled]="searchButtonDisabled">
    Search
</button>

如您所见,同时按下Enter和单击按钮都将调用onSearchPressed()方法。我不明白为什么一个会导致错误,而另一个却不会。

2 个答案:

答案 0 :(得分:0)

我只是在猜测,但是此错误很可能是由于igxInputenter印刷机也做出了反应。由于igxInput指令绑定到<input>标记,因此它对enter做出反应,但对单击<button>元素的反应不起作用。

答案 1 :(得分:0)

在setTimeout中包装您的方法,之后它将运行自己的changedetection,并且此错误将消失。

希望有帮助