Сортировать массив объектов угловой машинопись - PullRequest
0 голосов
/ 29 апреля 2018

В приложении TypeScript я устанавливаю массив объектов и показываю его пользователю в моем шаблоне

feedList: News[] =
  [
    { type: 1, slug: 'news', date: '2018/04/30', title: 'Header New', content: 'Lorem ipsum dolor sit amet'},
    { type: 2, slug: 'post', date: '2018/04/20', title: 'Header New', content: 'Lorem ipsum dolor sit amet' },
    { type: 1, slug: 'news', date: '2018/04/28', title: 'Header New', content: 'Lorem ipsum dolor sit amet' },
    { type: 1, slug: 'news', date: '2016/04/28', title: 'Header New', content: 'Lorem ipsum dolor sit amet' },
    { type: 2, slug: 'post', date: '2018/03/28', title: 'Header New', content: 'Lorem ipsum dolor sit amet' }
  ];

У меня есть функция сортировки

sortByType(feedList: News[]): void {
    feedList.sort(function(a, b) {
      return a.type - b.type;
    });
  }

И я звоню в шаблоне

%button.btn{(click)="sortByType(this.feedList)"} Sort

Но изменений нет и к ошибкам. Что я делаю не так?

Если я использую просто

[#objectarray#].sort(function(a, b) {
          return a.type - b.type;
        });

- работает

обн: все шаблоны

.feed
  %button.btn{(click)="sortByType(this.feedList)"}
    Sort by type
  .f-item{*ngFor: "let feedItem of feedList", class: "{{feedItem.slug}}"}
    .type
      {{feedItem.type}} {{feedItem.slug}}
    .date
      {{feedItem.date}}

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я пишу функцию сортировки по Typescript на Angular, которая сортирует массив объектов на основе свойства списка.

Предположим, у нас есть список таких объектов:

Items: News[] =

      [
        { type: 1, slug: 'news', title: 'Header New', content: 'Lorem ipsum dolor sit amet'},
        { type: 2, slug: 'post', title: 'Header New', content: 'Lorem ipsum dolor sit amet' },
        { type: 1, slug: 'news', title: 'Header New', content: 'Lorem ipsum dolor sit amet' },
        { type: 1, slug: 'news', title: 'Header New', content: 'Lorem ipsum dolor sit amet' },
        { type: 2, slug: 'post', title: 'Header New', content: 'Lorem ipsum dolor sit amet' }
      ];

Моя функция такая:

sort(array:any[],property:string,isNumber:boolean){
        if(isNumber){
            return array.sort((item1,item2)=> {
                return (item1[property] > item2[property]) ? 1 : -1;});
        }else{
            return array.sort((item1,item2)=> {
                return (item1[property].toLowerCase() > item2[property].toLowerCase()) ? 1 : -1;});
        }
    }
  • параметр 1: массив, который должен быть отсортирован
  • параметр 2: это свойство, по которому происходит сортировка
  • param 3: логическое значение, определяющее, что param 2 является числом или строкой
0 голосов
/ 29 апреля 2018

в вашем шаблоне:

(click)="sortByType(feedList)"

в компоненте:

sortByType(feedList: News[]): void {
    feedList.sort(function(a, b) {
      return a.type - b.type;
    });
this.feedList = feedList  }

в вашем шаблоне, где вы хотите показать отсортированный массив, поместите:

{{feedList|json}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...