私は、文字領域にバインドされた文字列変数を持つオブジェクトを持っています。 (ngModelChange)では、編集時に文字列の長さをチェックする関数があり、長すぎると実際の値に "以前の値"が割り当てられます。このように:角度2 ngModelの双方向バインディングが動作しない場合があります
t.value = t.previousValue;
これは機能しません。私がデバッグすると、変数が割り当てられ、すべてがうまくいくように見えますが、データバインディングは更新されません。しかし、t.previousValueを "test"に変更すると、それが動作し、テキストエリアが更新されます。
t.value = "test";
違いは何ですか?
関連するコード:
<textarea type="text" class="form-control" [(ngModel)]="t.value" (ngModelChange)="isOverflowing(t)"></textarea>
は次のようになります:あなたはmanaully変更イベントを設定している場合は、ngModelとバナナ・ボックスを使用しないでください
<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でこれをしたと言いますか?変更検出の途中で値が変化し続けるため、不定期の変更チェックが行われる可能性があることに注意する必要があります。 – wannadream
あなたのビューとコンポーネントコードを教えていただけますか? – birwin
'$ scope。$ apply()'がそれを解決するかどうか教えてください。あなたのコードは再現するのに十分ではありません! – d9ngle