Angular ng2 dragula和dynamic不直接同步
我有一个由用户动态生成的表单:Angular ng2 dragula和dynamic不直接同步,angular,typescript,ng2-dragula,Angular,Typescript,Ng2 Dragula,我有一个由用户动态生成的表单: // this._fb is a FormBuilder ngOnInit():void { this.myForm = this._fb.group({ message: this._fb.array([ ]) }); 生成的json类似于 { "message": [ { "type": 1, "value": "first message", }, {
// this._fb is a FormBuilder
ngOnInit():void {
this.myForm = this._fb.group({
message: this._fb.array([
])
});
生成的json类似于
{
"message": [
{
"type": 1,
"value": "first message",
},
{
"type": 1,
"value": "second message",
}
]
}
我添加了ng2 dragula指令以更改消息顺序
<form [formGroup]="myForm">
<div formArrayName="message">
<div [dragula]='"bag-one"' [dragulaModel]='myForm.controls.message.controls'>
<div *ngFor="let c of myForm.controls.message.controls; let i=index" class="panel panel-default" >
<div class="panel-body" [formGroupName]="i">
<label>value</label>
<input type="text" class="form-control" formControlName="value">
</div>
</div>
</div>
</div>
价值
拖动函数工作得很好,但是当我显示表单的json时,它仍然是旧的顺序,除非我开始更改字段的内容。我认为表单已经更新了。所以我找到了一个解决方案,不确定它是否是最好的,而且我对angular还很陌生,但至少它能工作 所以我想我需要找到一种方法从表单中发出一个事件 在我的表单中,实际上有一个值“order”,对应于列表中的id,因此我执行了以下操作:
_dragulaService.dropModel.subscribe((value:any) => {
console.log(value);
this.onDropModel(value.slice(1));
});
}
private onDropModel(args:any):void {
for (let i = 0; i < (<FormArray>this.myForm.get('message')).length; ++i) {
(<FormArray>this.myForm.get('message')).at(i).patchValue("order", i);
}
}
\u dragulaService.dropModel.subscribe((值:any)=>{
console.log(值);
这个.onDropModel(value.slice(1));
});
}
私有onDropModel(参数:任意):无效{
for(设i=0;i<(this.myForm.get('message')).length;++i){
(this.myForm.get('message')).at(i).patchValue(“order”,i);
}
}
只是一个简单的猜测:[dragulaModel]=“myForm.controls.message.controls”
是单向绑定。您可以使用此处的双向绑定或事件来更新您的模型吗?我对angular2很陌生,您所说的双向绑定使用[(ngModel)]
是什么意思?奇怪的是,当我开始编辑一个字段时,所有内容都会按正确的顺序更改