我制作一个角度为6的系统,我有更多100个输入用于制作,但我有很多形式,并且表格使用了一些输入很多次。因为我想要创造动态形式。但我认为如何将输入配置连接到正确对象的最佳形式。
我在思考创建输入的所有定义并捕获这个基于值的对象,但我的定义是这样做的
let inputs: FormBase<any>[] = [
new InputTextForm({
key: 'Id',
label: 'Id',
value: '',
required: true,
order: 1
}),
new InputTextForm({
key: 'Nome',
label: 'Nome',
value: '',
required: true,
order: 2
}),
new InputTextForm({
key: 'Descricao',
label: 'Descricao',
order: 3
}),
new InputTextForm({
key: 'PodeFracionar',
label: 'Pode Fracionar',
order: 4
}),
new InputTextForm({
key: 'TaxaPis',
label: 'Taxa Pis',
order: 5
}),
];
return inputs.sort((a, b) => a.order - b.order);
}
但是所有对象的名称都是InputTextForm,我需要基于key的过滤器。但我如何过滤并按键将一个InputTextForm推送到其他数组过滤?
您是否已经尝试迭代数组并在每次迭代时检查key
属性的值?
Lodash的_.forEach()方法对此非常有用。您可以迭代一个对象:
_.forEach(someObject, function(value,key) { /* some function */})
或者你可以迭代一个数组:
_.forEach(someArray, function(value) { if (value.key == 'someVal') {/*code*/}})
然后在forEach循环中,您可以检查您的值,如果它们匹配,则推送到您的其他数组。
你不必在这里使用lodash数组对象有过滤方法会做同样的事情,你可以考虑使用原生的javascript函数然后为你的项目注入一个新的依赖项,它会给出相同的结果
let result = inputs.filter(i => i.key === 'TaxaPis') ;
console.log(result); // => [{key: 'TaxaPis', label: 'Taxa Pis', order: 5}]