angular - 在迭代期间通过 Angular 2 中的映射键检查表达式后,表达式已更改

标签 angular typescript

我不明白为什么会出现错误。我的 map 没有改变 .

Expression has changed after it was checked. Previous value: '[object Map Iterator]'. Current value: '[object Map Iterator]'

<tr *ngFor="let author of bindedAuthors.keys()">
  <td> {{author}}</td>
  <td>
    <button (click)="onUpdate(author)"
            class="btn gl-btn-primary">Update
    </button>
  </td>
  <td>
    <button (click)="onDelete(author)" class="btn gl-btn-default">Delete</button>
  </td>
</tr>

结果是预期的,显示了所有数据,但此错误每次都会淹没控制台。

最佳答案

不要绑定(bind)到模板中的方法 ...keys()。 每次运行更改检测时都会调用它。 object.keys() 每次调用都会返回一个新对象,Angular 将此识别为意外更改,从而导致您的错误。

你可以像这样修复它

someMethod() {
  this.bindedAuthorsKeys = this.bindedAuthors.keys();
}
*ngFor="let author of bindedAuthorsKeys"

关于angular - 在迭代期间通过 Angular 2 中的映射键检查表达式后,表达式已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079366/

相关文章:

angular - fullcalendar '' has no exported member ' 选项'.- Angular 出错

Angular2 - 无法绑定(bind)到 'ngSwitchCase',因为它不是已知的 native 属性

unit-testing - 如何对包含路由器弃用版本的 Angular 2.0 服务进行单元测试?

sublimetext2 - 如何为 TypeScript 配置 Sublime 构建系统

javascript - Angular 2 : TypeError: l_thing0 is undefined in [{{thing. 标题}} AppComponent@4:44]

typescript - 根据映射键从接口(interface)映射中选择类型

angular - 如何通过在 Angular 2 中单击按钮来触发要打开的新窗口

javascript - 功能并不从形式中获取值(value)

angular - 使用 Angular Material Table Exporter 导出分页垫表

javascript - 从对象数组中删除特定属性