2017-10-15 51 views
0

我使用jquery以编程方式填充表单输入字段值。这些值在表单中可见。当我提交表单数据时,该数据不包含这些值。当我手动修改值时,数据不包含的值:Angular 4 ngSubmit未从jquery填充的输入中获取值

我运行填充的输入域的函数:

$('#itemNum').val('myNewValue'); 

即填充一个输入像这样:

<input type="text" [(ngModel)]="item.number" name="number" id="itemNumber" class="form-control"> 

我可以在输入栏中看到这个新填充的值。如果我编辑该输入,我可以在提交时获得该值。但是,如果我离开它是,它仅返回组件定义的属性:

export class MyComponent implements OnInit { 
    item: Item = { 
    number:0, 
    ... 
    } 
    onSubmit(value){ console.log(value) } 
} 

我怎样才能得到ngForm/ngModel/ngSubmit看到这些jQuery的填充值?

仅供参考,我的形式如下:

<form novalidate #f="ngForm" (ngSubmit)="onSubmit(f)"> 
<input type="text" [(ngModel)]="item.number" name="number" id="itemNumber" class="form-control"> 
... 
<input type="submit" class="btn btn-primary" value="Confirm"> 
</form> 

回答

1

角和jQuery是不同的东西,有没有办法对角知道的jQuery,你不应该因为这可以使用所做的更改的就是你”重新使用Angular for。

如果您需要以编程方式更改值,然后简单地说:

this.item.number = 10; 

如果你使用无形式代替,那么你会做这样的:

this.form.get('item.number').setValue(10); 
+0

感谢基督徒,我来了意识到看到https://stackoverflow.com/a/17110709/4493441之后。我的挑战是试图从通过ngFor循环构建的表格行构建表单。我意识到这个表单只是重复工作,直接从表格行中直接运行我的提交函数,所有数据都是这样。谢谢你的帮助! – edoras