我使用Angular2 rc4和新表格。如果我在输入中使用ngControl
并命名属性,然后查看表单,我将在form.controls
集合中看到控件。
<form #programForm="ngForm">
<input type="text" ngControl="showTitle" name="showTitle" class="form-control" aria-describedby="ShowTitle" placeholder="Show Title" [(ngModel)]="criteria.programFilter.name" />
</form>
然后在某些情况下,我会在传递表单的组件类上调用一个方法,然后查看表单控件。
someMethod(form: NgForm){
for (let c in form.controls) {
let ctrl = form.controls[c];
if (ctrl != null) { //we will have the control here
break;
}
};
}
如果我然后在输入中添加[formControl]
指令,则form.controls
集合不再具有控件。
<input type="text" ngControl="showTitle" name="showTitle" [formControl]="showTitleCtrl" class="form-control" aria-describedby="ShowTitle" placeholder="Show Title" [(ngModel)]="criteria.programFilter.name" />
someMethod(form: NgForm){
for (let c in form.controls) {
let ctrl = form.controls[c];
if (ctrl != null) { //we won't have the control here
break;
}
};
}
我需要在form.controls
集合中拥有控件,我需要能够订阅输入值更改。
showTitleCtrl = new FormControl();
this.showTitleCtrl.valueChanges.debounceTime(400).distinctUntilChanged().subscribe(v => this.doSomething());
在已弃用的表单中,这一切都能正常运行ngControl="showTitle"
和[ngFormControl]="showTitleCtrl"