С учетом исходного примера:
var objs = [
{ first_nom: 'Lazslo', last_nom: 'Jamf' },
{ first_nom: 'Pig', last_nom: 'Bodine' },
{ first_nom: 'Pirate', last_nom: 'Prentice' }
];
Сортировка по нескольким полям:
objs.sort(function(left, right) {
var last_nom_order = left.last_nom.localeCompare(right.last_nom);
var first_nom_order = left.first_nom.localeCompare(right.first_nom);
return last_nom_order || first_nom_order;
});
Примечания
a.localeCompare(b)
- универсально поддерживается и возвращает -1,0,1, если a, a==b
, a>b
соответственно.
||
в последней строке дает last_nom
приоритет над first_nom
. var age_order = left.age - right.age;
return -last_nom_order || -first_nom_order || -age_order;
Если вам нужен только конкретный контент из компонента, вы должны использовать ng-template. Оберните содержимое, которое вы хотели бы в ng-шаблон, и обратитесь к шаблону вместо самого компонента. Я нашел стек, который имеет хороший пример для этого, используя TemplateRef и без: https://stackblitz.com/edit/ng-template-mat-dialog?file=app%2Fapp.component.html