I have a class that sets up a FormArray of Product Benefits. This array contains benefitGroupName and benefitSettingName properties. I would like to loop through this array in my html view to display only unique benefitGroupName values, as many of them are duplicates.
export class EditProductsComponent implements OnInit {
productBenefitSettingForm: FormGroup;
benefitSettings: FormArray;
benefitSettingList: BenefitSettingModel[] = [];
AddBenefitSetting() {
const control = this.productBenefitSettingForm.controls.benefitSettings as FormArray;
control.push(this.productBenefitSettingFormGroup());
this.benefitSettingList.push(new BenefitSettingModel());
this.counter++;
this.benefitSettingList[this.counter].benefitSettingId = '';
this.benefitSettingList[this.counter].benefitGroupId = null;
}
}
Model:
export class BenefitSettingModel {
benefitSettingId: string;
benefitSettingName: string;
benefitGroupId: number;
benefitGroupName: string;
}
My view is currently spitting out all benefitGroupName values with an ngFor
The logic I believe I need to apply is something like benefitSettingList.benefitGroupName.filter((v, i, a) => a.indexOf(v) === i) to get unique benefitGroupName values but I'm not sure where in my class to do that or how to call it in the view.
<div formArrayName="benefitSettings" *ngFor="let benefitSetting of productBenefitSettingForm.get('benefitSettings')['controls']; let i = index; let last = last">
{{benefitSettingList[i].benefitGroupName}}
</div>