typescript - Lägga till <hr>/ HTML-element mellan sorterade element i array i Angular
Som i ämnet - jag har en array med sorterade element. Min funktion för att sortera element i arrayen:
private reorderOptions(filter: FormFilterConfig): void {
const filterOptions: FormFilterOption[] = filter.formOptions
.sort((x: FilterOption, y: FilterOption) => x.name > y.name ? 1 : -1);
filter.formOptions = [
...filterOptions.filter((o: FormFilterOption) => o.isSelected),
...filterOptions.filter((o: FormFilterOption) => !o.isSelected)
];
html :
<component-checkbox *ngFor="let formControl of filteredFormControls[i]"
[formControl]="formControl">{{ getCheckboxName(i, formControl) }}
</component-checkbox>
Jag behöver på något sätt lägga till <hr>-väljaren mellan o.isSelected och !o.isSelected. Har någon en idé om hur man löser det?
Svar #1
Detta är något du kan göra i din HTML-mall som:
<div *ngFor="let item of items; let i = index">
<hr *ngIf="shouldRenderHR(i)"/>
<!-- render item here -->
</div>
Och sedan följande shouldRenderHR i TypeScript:
public shouldRenderHR(i) {
if (i == 0) return false;
if (
(this.items[i].isSelected && !this.items[i-1].isSelected) ||
(!this.items[i].isSelected && this.items[i-1].isSelected)
) return true;
return false;
}
