【发布时间】:2017-12-14 17:59:44
【问题描述】:
这是我原来的问题的延续
stackoverflow.com/questions/44596418/angular-throws-expressionchangedafterithasbeencheckederror-with-textarea
这仍然没有解决。我重新创建了原始 plunkr 来模拟实际项目,发现它与 textarea 无关。
当我通过单击列表中的项目进入详细信息页面时,抛出异常 ExpressionChangedAfterItHasBeenCheckedError。仅当 src/detailitems.ts 的 CodeView 在数组中有多个元素时才会发生这种情况。 CodeView 项以详细形式定义字段。
import { FormBase } from './formbase'
import { ItemBase, TextboxItemBase } from './itembase'
export class CodeView extends FormBase {
static getItems() :ItemBase[] {
let items: ItemBase[] = [
new TextboxItemBase(
{
key: 'id',
label: 'ID',
value: '',
required: true,
enabled: false,
readOnly: true,
size: 36
}
)
,
new TextboxItemBase(
{
key: 'description',
label: 'Description',
required: true,
size: 20
}
)
];
return items;
}
}
如果我修改代码使 CodeView 只有 1 项,那么异常就会消失。
No Exception Plunkr(仅详细一项)
【问题讨论】:
-
第一个 plunker 不起作用。要了解为什么会发生此错误,请阅读 Everything you need to know about the
ExpressionChangedAfterItHasBeenCheckedErrorerror