Angular-ngFor上的ExpressionChangedAfterItHasBeenCheckedError

Joã*_*lva 2 angular

我正在用来自数组的数据填充表,并且我想将自定义输入集中在表的最后一个元素上,所以我需要这样做:

<tr *ngFor="let detail of detailsList; let i = index" (dblclick)="showDetailDetails(detail.ID, i)">
    <th>{{ a few table fields}}</th>
    <th>
        <md-input-container>
            <input [focus]="detailsList.length-1 == i" mdInput type="number" (keypress)="qtKeyDown($event)" (change)="getTotalNetAmount(i)" [(ngModel)]="detail.OrderedQuantity" [ngModelOptions]="{standalone: true}" value="{{detail.OrderedQuantity}}" min="1" OnlyNumber="true" [disabled]="!editMode">
        </md-input-container>
    </th>
    <th>
        (More fields)
    </th>
</tr>
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但是当数组中有多个项时,我的控制台出现错误。我注意到问题出在以下代码中:

detailsList.length-1 == i
Run Code Online (Sandbox Code Playgroud)

反正有解决此错误的方法吗?该代码按预期工作,因此该错误不会干扰网站的行为,问题是我不希望用户在浏览器控制台中看到错误。

Roc*_*st1 6

这通常与changeDetection有关。没有看到您的代码,我猜您在某个时候正在执行push()。在push()之后添加以下内容:

import { ChangeDetectorRef } from '@angular/core';

constructor(private ref: ChangeDetectorRef) { }


this.something.push(someVar);
this.ref.detectChanges();
Run Code Online (Sandbox Code Playgroud)

  • 雅几乎。我的意思是,错误是一个错误,您应该尝试修复它,但这只是您将在开发版本中看到的一个错误。 (2认同)