我正在编写一个脚本来简化工作。我有一个文本区域,我以编程方式粘贴了一些数据(el.value = ""
),想发布/提交它,但是我无法这样做,因为ng-pristine
和ng-empty
阻止了我办法。有什么解决办法吗?
我用于“粘贴”数据的代码如下:
function transfer(){
var fromV = document.getElementById('DataToCopy').value;
var toV1 = document.getElementById('TextareaToPasteTo1');
var toV2 = document.getElementById('TextareaToPasteTo2');
var foc = document.querySelector('TextareaToPasteTo');
foc.focus();
toV1.value += "transferring to: " + fromV;
toV2.value += "transferring to: " + fromV;
};
答案 0 :(得分:0)
我认为您应该使用markAsDirty方法,如下所示:
control.markAsDirty();
这还会将所有直接祖先标记为肮脏,以维护模型。
https://angular.io/api/forms/AbstractControl#!#markAsDirty-anchor
答案 1 :(得分:0)
为什么不在transfer
方法中清除所有类,除非它会影响UI ?
document.getElementsByName('whatever')[0].classList = [];
这将删除所有ng-valid, ng-invalid, ng-dirty, ng-pristine, ng-touched, ng-untouched, ng-empty, ng-not-empty
类(如果有)以及其他类。
如果它影响您的用户界面,则可以手动添加所需的类
document.getElementsByName('whatever')[0].classList = ['some-class', 'some-other-class'];
答案 2 :(得分:0)
好吧,我设法找到了解决方案。使用.classList = [];
会更改客户端的类,但是我需要将textarea中确实存在一些文本的信息推送到服务器,所以我触发了一个事件,它起作用了!
angular.element(jQuery('#activity-stream-textarea')).triggerHandler('input')
。