Q1。是否可以拥有一个控件 即:
ValidNumber = new Control('', CustomValidators.number({min:1, max:10}))
验证模板中所有类似类型的input
字段?
Q2。这些字段可以由ngFor
生成吗?
FailedMethod 1:验证有效,但值已耦合。
<input [ngFormControl]="ValidNumber" name="num1" type="number"/>
<input [ngFormControl]="ValidNumber" name="num2" type="number"/>
FailedMethod 2:使用formBuilder,它与上面相同。
<form [ngFormModel]="formBuiltWithFormBuilder">
<input ngControl="ValidNumber" name="num1" type="number"/>
<input ngControl="ValidNumber" name="num2" type="number"/>
</from>
客观澄清:
我正在尝试验证可能使用ngFor生成的表单字段 并要求进行类似的验证。
不在其他地方重复定义类似的控件。
我可以使用#form="ngForm"
或ngModel
之类的任何其他方法提取的值,我想要的ngControl
是验证。
答案 0 :(得分:3)
您也可以生成控件然后没有问题。
@Component({
...
template: `
...
<input *ngFor="let c in controls" [ngFormControl]="c" name="c.name" type="number"/>
...
`
})
class MyComponent {
// initialization with `['a', 'b', 'c']` just for demo purposes
// these values probably come from outside - hence @Input()
@Input() controlNames:string[] = ['a', 'b', 'c'];
controls: Control[];
ngOnInit() {
this.controlNames.forEach(
v => this.controls.push(
new Control('', CustomValidators.number{min:1, max:10})
)
);
}
}
(代码未经测试)
controls
更改时需要更新 controlNames
。 ngOnInit()
只运行一次。