allowArrayBrackets not working correctly
validateUniqueName is wrong The second part needs to be in the else of the allowArrayBrackets
validateUniqueName(control, form, attr, name) {
const elements = this.getUniqueElements(form);
const { allowArrayBrackets } = this.options;
if (allowArrayBrackets) {
const isarray = name.endsWith("[]");
const basename = isarray ? name.slice(0, -2) : name;
const details = elements.get(basename);
if (details && details.array !== isarray) {
const context = {
name: basename,
kind: "mix",
};
this.report({
node: control,
location: attr.valueLocation,
message: 'Cannot mix "{{ name }}[]" and "{{ name }}"',
context,
});
return;
}
else if (!details && isarray) {
elements.set(basename, {
array: true,
});
return;
}
}
else{
if (elements.has(name)) {
const context = {
name,
kind: "duplicate",
};
this.report({
node: control,
location: attr.valueLocation,
message: 'Duplicate form control name "{{ name }}"',
context,
});
}
else {
elements.set(name, {
array: false,
});
}
}
}