Сортировка в Angular 4 не работает - PullRequest
0 голосов
/ 05 июня 2018

У меня такая ошибка ... Левая часть арифметической операции должна иметь тип 'any', 'number' или тип enum.

Я показал в объяснении MDN иЯ не нахожу, где проблема.Когда я удаляю месяц из this.Months.push, сортировка работает, но в выпадающем списке отображаются только цифры, а не текст с месяцами.Вот мой код.

Это HTML.

<app-dropdown [ngModel]="selectedMonths" [multiSelect]="true" label="Select Month" labelWidth="75px" optionWidth="150px" [items]="Months" (ngModelChage)="monthChange($event)">
      </app-dropdown>

Это TS

 purchaser: Map<string, Purchased>;

 months: number [] = [];
 Months: DropdownOption[] = [];


const monate = [
        'January',
       'February',
        'March',
        'Aprill',
         'Mai',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December'
      ];

this.purchaser.forEach(purchaserId => {
        if (!this.months.includes(purchaserId.created.getMonth())) {
          this.months.push(purchaserId.created.getMonth());
          this.Months.push({key: purchaserId.created.getFullYear().toString(), value: month[purchaserId.created.getMonth().toString()]});
        }
      });

this.Months.sort((a, b) => +a.value - +b.value);
this.months.sort((a, b) => a - b);
month.sort((a, b) => a - b); // here is saying me the failure.

1 Ответ

0 голосов
/ 05 июня 2018

@ ZhuniquA.Ошибка ясна:

//You can use
a=+"23" //a=23

//But
a=+"potatoe"  //Give an error

Если вы хотите отсортировать месяцы по названию, которое вы используете

this.monate.sort((a,b)=>{
     return a==b?0:a>b?1:-1;
})

Но странно, что вы хотите отсортировать «некоторые» по месяцам по именимесяц: (

Когда мы используем такие, как «месяц», «ключом» является то, что «месяц» был числом. Если вы хотите показать название месяца, которое вы можете, например,

//Supouse your items are like [{data:"A",month:1}{data:"B",month:10}...]
//and you have defined in your .ts monate=['January','Febrary'......] 

<div *ngFor="let item of items">
    {{item.data}}{{monate[item.month-1]}}
</div>

Или

//you can have an object item like {data:'A',month:3} and a form like

<form>
   <input [(ngModel)]="item.data"/>
   <select [(ngModel)]="item.month">
        <option *ngFor="let month of monate;let i=index" [value]="{{i+1}}"> 
             {{month}}
        </option>
   </select>
</form>

Одна вещь - это «данные», другая - как вы показываете данные

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