Browse Source

feat(core): export trackBy and trackByDeep separately

pull/3320/head
Arman Ozak 7 years ago
parent
commit
15b93c3199
  1. 14
      npm/ng-packs/packages/core/src/lib/services/track-by.service.ts

14
npm/ng-packs/packages/core/src/lib/services/track-by.service.ts

@ -1,15 +1,17 @@
import { Injectable, TrackByFunction } from '@angular/core';
import { O } from 'ts-toolbelt';
export const trackBy = <T = any>(key: keyof T): TrackByFunction<T> => (_, item) => item[key];
export const trackByDeep = <T = any>(
...keys: T extends object ? O.Paths<T> : never
): TrackByFunction<T> => (_, item) => keys.reduce((acc, key) => acc[key], item);
@Injectable({
providedIn: 'root',
})
export class TrackByService<ItemType = any> {
by<T = ItemType>(key: keyof T): TrackByFunction<T> {
return (_, item) => item[key];
}
by = trackBy;
byDeep<T = ItemType>(...keys: T extends object ? O.Paths<T> : never): TrackByFunction<T> {
return (_, item) => keys.reduce((acc, key) => acc[key], item);
}
byDeep = trackByDeep;
}

Loading…
Cancel
Save