Javascript 如何以角度反应形式设置对象键值
我有一件像这样的东西Javascript 如何以角度反应形式设置对象键值,javascript,html,angular,angular-forms,Javascript,Html,Angular,Angular Forms,我有一件像这样的东西 types: { 2: { zoom: true, select: true }, 4: { zoom: true, select: true }, } 是否可以从角度形式创建此json对象 <div formGroupName="types"> <input type="number" matInput placeholder="Type&
types: {
2: {
zoom: true,
select: true
},
4: {
zoom: true,
select: true
},
}
是否可以从角度形式创建此json对象
<div formGroupName="types">
<input type="number" matInput placeholder="Type" [(ngModel)]="searchType" i18n-placeholder>
<div [ngModelGroup]="searchType">
<mat-slide-toggle [(ngModel)]="searchType.zoom" color="primary">Zoom</mat-slide-toggle>
<mat-slide-toggle [(ngModel)]="searchType.select" color="primary">Klik</mat-slide-toggle>
</div>
</div>
快速移动
克里克
遗憾的是,不可能更改json,但数字需要可以更改。表单是反应式驱动的,但我找不到方法,所以我尝试了模板驱动,但两种方法都不起作用。使用Angular
反应式表单和工厂
构建您想要的json
对象。可以将属性
动态添加到对象中。但是您的道具名称不能是您在示例中提到的一些数字;如果你想要一些东西,最好有一个对象数组
那么,试试这样的方法:
应用程序组件.ts
从'@angular/core'导入{Component,OnInit};
从'@angular/forms'导入{FormGroup,FormBuilder,Validators};
从“./type.factory.ts”导入{TypeFactory};
从“./app type.model”导入{TypeModel};
@组成部分({
选择器:“我的应用程序”,
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent实现OnInit{
typesForm:FormGroup;
类型:TypeModel[]=[];
建造师(
私有formBuilder:formBuilder,
私人打字机厂:打字机厂,
){}
恩戈尼尼特(){
this.typesForm=this.formBuilder.group({
id:['',[需要验证程序]],
缩放:[''],
选择:['']
});
}
regForm=()=>{
让newType=this.typeFactory.createTypeDto(this.typesForm.getRawValues());
this.types=[…types,…newType];
}
}
app.component.html
快速移动
克里克
登记
应用程序类型.model.ts
导出类类型模型{
id:编号;
缩放:布尔;
选择:布尔型;
}
app.factory.ts
import{TypeModel}from./app-type.model';
出口级打字机厂{
createTypeDto(
表格:任何,
):TypeModel{
常量模型=新类型模型();
model.id=form.id;
model.zoom=form.zoom;
model.select=form.select;
收益模型;
}
}
为什么不使用formControlName
?这些数字是什么以及它们来自何处?你想要一个反应式表单,但你需要使用模板驱动表单所需的ngModel
。你可以动态地向你的对象添加属性。但是你的道具名称不能像你在例子中提到的那样是number
;如果你想要一些东西,最好有一个对象数组。看到我的答案了吗