绑定模型后的类绑定错误

时间:2016-05-10 07:38:39

标签: angular

我有以下表格输入:

<div [ngClass]="{selected: roleName.valid}">
    <input type="text" [(ngModel)]="model.RoleName" ngControl="roleName" #roleName="ngForm" id="roleName" />
</div>

我在OnInit事件中绑定模型。问题是我收到以下错误:

Expression '{selected: roleName.valid} in RoleEditComponent@8:21' has changed after it was checked. Previous value: 'null'. Current value: 'false' in [{selected: roleName.valid}

我知道我可以禁用此错误启用prod模式,但我不确定这是不是一个好主意。我的方法有什么问题,如何解决这个问题?

修改

我刚刚意识到这种情况甚至没有设置模型。示例代码:http://plnkr.co/edit/dFlxNAfC0VRy9BtRampW?p=preview

1 个答案:

答案 0 :(得分:1)

<强>更新

我认为当以这种方式访问​​控件的属性时,这是一个已知问题(https://github.com/angular/angular/issues/8139)。

如果从表单中获取控件引用,则不会发生错误。

<form [ngFormModel]="form" form="ngForm">
    <div [ngClass]="{'has-error': form.controls.roleName.valid}">
        <input type="text" [(ngModel)]="model.RoleName" ngControl="roleName" #roleName="ngForm" id="roleName" />
    </div>
</form>`,

Plunker example

另见Angular2 and disabling button exception

<强>原始

ngOnInit()是由Angulars变量检测调用的生命周期回调。角度变化检测不喜欢它的动作导致模型更改。这通常是“表达式x在......之后发生了变化”的原因。

您可以将代码在ngOnInit()中包装到setTimeout(() => ...)中,以便在更改检测生命周期回调完成后延迟执行,或者将其移动到其他位置(例如构造函数)。