使用带有ngControl的formControl指令时,Angular2 Form控件不在form.controls集合上

时间:2016-07-12 03:10:41

标签: angular angular2-directives angular2-forms

我使用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"

0 个答案:

没有答案