Konnichiwa ebakunin,
У меня та же проблема с переопределением нативного элемента, и есть простой способ получить данные сортировки, чтобы они не изменили исходное значение ваших данных.
Сначала вам нужно набрать asp ссылку в Array
. Все, что нам нужно сделать, сделать глубокий клон. JSON
методы являются наиболее совместимыми для применения этой ситуации без вызова другого метода, и нет никаких модификаций с помощью метода native- angular.
cloneDeep (Data:any){
return JSON.parse(JSON.stringify(Data));
}
После этого создайте метод в dataSource, наблюдает данные, как вы хотите. В качестве альтернативы вы хотите настроить специальный sortData
и следовать ему. Вместо прямого изменения верните вызванный метод, и вы получите более простое и гибкое использование, как будто вы не хотите помещать MatSort
в аргументы, просто избавьтесь от него.
constructor(){
//add the new method of the dataSource.
this.sortedData.observeSortData = (data : T[],sort: MatSort) : T[] =>{
let clone_data = this.cloneDeep(data);
console.log(clone_data.sort((a,b)=> a - b)); // what order you want, place your fomula in your call back
return this.sortData(data,sort);
}
}