【发布时间】:2017-10-20 01:06:00
【问题描述】:
我有一个对象,它带有一个绑定到文本区域的字符串变量。在(ngModelChange)中,我有一个函数可以在编辑字符串时检查字符串的长度,如果它太长,则将“先前值”分配给实际值。像这样:
t.value = t.previousValue;
这不起作用。当我调试时,我看到变量被分配并且一切看起来都很好,但是数据绑定没有更新。但是,如果我将 t.previousValue 更改为“test”,那么它会起作用并且 textarea 会更新。
t.value = "test";
有什么区别?
相关代码:
<textarea type="text" class="form-control" [(ngModel)]="t.value" (ngModelChange)="isOverflowing(t)"></textarea>
if (this.textArea.nativeElement.clientHeight < this.textArea.nativeElement.scrollHeight){
if(t.value.length - t.previousValue.length > 1){
t.value = t.previousValue;
}else{
t.value = t.value.substring(0,t.value.length-2);
}
}
t.previousValue = t.value;
【问题讨论】:
-
您是说您在 ngOnChanges 中执行此操作?您应该小心,可能会发生不定式更改检查,因为值在更改检测过程中不断变化。
-
你能告诉我们你的视图和组件代码吗?
-
你能告诉我们
$scope.$apply()是否解决了它?您的代码不足以重现! -
这是 Angular 2+,所以我认为我不能使用它
标签: angular data-binding angular2-forms