奇数行为动态呈现输入类型复选框Angular 2+;
需要:奇数行为动态呈现输入类型复选框Angular 2+;,angular,checkbox,dynamic,behavior,Angular,Checkbox,Dynamic,Behavior,需要: 使用类型属性dynamic创建输入。类似这样的内容: 在表单组(反应式表单)中使用上述输入和“复选框”动态值 问题: 当我动态设置type属性时,问题就出现了,当我用false初始化FormControl时,它导致在DOM中创建一个属性值为false的复选框。因此,表单组永远不会更新 注意事项: 当我直接设置type=“checkbox”时,问题不会发生,因为它不会生成value属性 这种行为在最新版本的Chrome和Firefox中都有体现 这种行为表现在angular@4.4.
- 使用类型属性dynamic创建输入。类似这样的内容:
- 在表单组(反应式表单)中使用上述输入和“复选框”动态值
- 当我直接设置type=“checkbox”时,问题不会发生,因为它不会生成value属性
- 这种行为在最新版本的Chrome和Firefox中都有体现
- 这种行为表现在angular@4.4.6及angular@5.0.0(我还没有在Angular的其他版本中进行测试)
谢谢 这可能是同一问题的另一种风格。对于模型驱动的表单,如果您将输入类型动态设置为“电子邮件”,电子邮件验证将不起作用-浏览器或角度验证不起作用。相反,它将作为文本进行验证。不过,NgModel和所有其他工具都可以工作。假设字段。类型=='email':
<input *ngFor="field in fields" [type]="field.type" [(ngModel)]="field.model" [required]="field.required"/>
我几乎可以肯定我已经用一些早期的4.x做到了这一点,并且它起了作用,但可能是记忆在和老人玩把戏。也许我用ngSwitch或ngIf来交换整个输入,我想这也是目前唯一的解决办法。目前有一个公开的问题,Igor Minar和Angular团队正在研究: 同时,您可以执行以下解决方法:
onChange(event) {
this.form.get(event.target.attributes.formcontrolname.value)
.setValue(event.target.checked);
}
在html中添加以下内容:
<input id="check" type="{{'checkbox'}}" formControlName="checkOdd (change)="onChange($event)"/>
我没有看到您的
表单控件在.ts
中定义。你看过动态表单文档吗?我正在使用FormBuilder,它在内部创建所需的FormControls。该行为与手动FormControl相同。
onChange(event) {
if(event.target.type === 'checkbox') {
console.log('Checkbox');
}
if(event.target.type === 'text') {
console.log('text');
}
this.form.get(event.target.attributes.formcontrolname.value)
.setValue(event.target.checked);
}