|
|
@ -1,12 +1,12 @@ |
|
|
import { BehaviorSubject, Observable } from 'rxjs'; |
|
|
import { BehaviorSubject, Observable } from 'rxjs'; |
|
|
import { NavItem } from '../models/nav-item'; |
|
|
import { NavItem } from '../models/nav-item'; |
|
|
import { inject, Type } from '@angular/core'; |
|
|
import { inject, Type } from '@angular/core'; |
|
|
import { SORT_COMPARE_FUNC } from '@abp/ng.core'; |
|
|
import { SORT_COMPARE_FUNC, SortableItem } from '@abp/ng.core'; |
|
|
|
|
|
|
|
|
export abstract class AbstractMenuService<T extends NavItem> { |
|
|
export abstract class AbstractMenuService<T extends NavItem> { |
|
|
protected abstract baseClass: Type<any>; |
|
|
protected abstract baseClass: Type<any>; |
|
|
|
|
|
|
|
|
protected readonly sortFn = inject(SORT_COMPARE_FUNC); |
|
|
protected readonly sortFn: (a: SortableItem, b: SortableItem) => number; |
|
|
|
|
|
|
|
|
protected _items$ = new BehaviorSubject<T[]>([]); |
|
|
protected _items$ = new BehaviorSubject<T[]>([]); |
|
|
|
|
|
|
|
|
@ -18,6 +18,10 @@ export abstract class AbstractMenuService<T extends NavItem> { |
|
|
return this._items$.asObservable(); |
|
|
return this._items$.asObservable(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
constructor() { |
|
|
|
|
|
this.sortFn = inject(SORT_COMPARE_FUNC); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
addItems(newItems: T[]) { |
|
|
addItems(newItems: T[]) { |
|
|
const items = [...this.items]; |
|
|
const items = [...this.items]; |
|
|
newItems.forEach(item => { |
|
|
newItems.forEach(item => { |
|
|
|