完整的错误消息是:
angular2.dev.js:23597 EXCEPTION:Expression' ngClassUntouched in myComponent的@ 7:12'检查后发生了变化。以前的价值: '真&#39 ;.当前价值:' false'在[ngClassUntouched in MyComponent的@ 7:12]
错误指向此控件:
REGION="${REGION//-/_}" # Bash
REGION="$(echo "$REGION"|tr - _)" # POSIX
基本上,当我执行以下命令将焦点从searchTxt更改为动态创建的输入时,会在keyup事件中发生这种情况:
<input [(ngModel)]="searchTxt" class="searchText" type="text"
class="form-control" placeholder="Search all departments & sites"
(keypress)="handleKeyboard($event)" [ngClass]="{noBorder: tags.length >
0}" (keyup)="handleKeyboard($event)" autocomplete="off"/>
更多细节:这是动态创建的输入数组:
this.inputs.toArray()[0].nativeElement.focus();
这些输入是以下结果:
<div *ngFor="#item of records?.data">
<input #input name="r{{item.id}}" class="focusInputBox" type="text"/>
</div>
有什么建议吗?
ty !!!
更新:我注意到在searchTxt上添加了几个类:class =&#34; form-control searchText ng-untouched ng-valid ng-dirty&#34;
当我设置输入框的焦点时,添加了ng-untouched加入searchTxt。
答案 0 :(得分:2)
将焦点()包裹在setTimeout(...)
中这是导致在Angular不期望更改时设置类的原因:
setTimeout(() => {
this.inputs.toArray()[0].nativeElement.focus();
}, 0);
答案 1 :(得分:2)
也许您可以将ChangeDetectorRef
注入您的组件并调用其detectChanges
方法:
constructor(private cdr: ChangeDetectorRef) {}
ngOnInit() {
this.cdr.detectChanges();
}
此方法的调用可以在其他地方完成,因为它取决于您加载标记的方式......