html - 将值设置到地图中
问题描述
我将键和值设置到表单中的映射中,并且对于每个字段,如果该字段不为空,我将进行验证。我正在寻找更好的解决方案...为了让我的代码更干净,因为我有 10 多个字段...
这是我的 component.ts 文件:
const map = new Map<Object, string>();
if (this.form.value.value1!= null) {
map[KEY.VALUE_1] = this.form.value.value1;
}
if (this.form.value.value2!= null) {
map[KEY.VALUE_2] = this.form.value.value2;
}
...
这是我的 component.html 文件:
<div [formGroup]="form">
<fieldset>
<legend>Values</legend>
<mat-form-field >
<input matInput placeholder="value1" formControlName="value1">
</mat-form-field>
<mat-form-field>
<input matInput placeholder="value2" formControlName="value2">
</mat-form-field>
...
</fieldset>
</div>
解决方案
Object.keys(form.value).filter(a => form.value[a] !== null).forEach(key => {
map[key] = form.value[key];
});
Object.keys 获取您的表单值(对象)并将其转换为所有对象属性的数组。所以 Object.keys 将是一个像这样的数组: ['value1', 'value2'] 在你的例子中。
接下来,您只希望 form.value 上不为空的属性是否正确?因此过滤器将每个名称都命名为“a”(第一次迭代时实际上是“value1”)并检查 form.value[a] !== null 是否。过滤器的工作原理是如果返回 true,则该元素通过,如果失败,则从数组中拼接元素。
现在您只有 form.value[key] 不为空的键。因此,为每个执行一个并从该 form.value[key] 值中设置您想要的地图对象。
form.value[key] 和 form.value.key 是一样的,但是因为 key 是动态的,所以你不能这样做。你必须这样写 form.value[key]。
推荐阅读
- tensorflow - C++ API如何解析tensorflow::Ops::combinednonmaxcompression的返回值?
- python - 保留列的首选值并删除不太首选的值
- node.js - 使用 Mongoose 在 Mongodb 中搜索两个集合
- java - javaFX场景中的NullPointerException
- reactjs - 过滤器不显示结果
- python - Python Mock return_value 在测试中持续存在
- javascript - 嵌套 ThemeProvider 是一个好习惯吗?
- python - 在 Tensorflow Serving 上提供模型时,如何从 Tensor 获取 numpy.array 或 pandas.Dataframe(用于形状解释器)?
- google-cloud-platform - Cloud Shell Editor 中的“重新加载”或“重新连接” - 有区别吗?
- csv - jackson-dataformats-text 如何将数组分隔符定义为方括号'[]'