如何禁用自动键值排序Angular 6

时间:2018-12-21 10:47:20

标签: angular typescript

我已经在ts文件中创建了数组,并使用ngFor从数组中获取元素,但是当我使用键值时,angular会自动对数组进行排序。如何像创建数组一样保存订单。

TS代码:

filterListingTypeItems: { [key: string]: object } = {


  'For sale': [
      'For sale',
      'By Agent',
      'By ownre',
      'New Construction',
      'Foreclosures',
      'Coming Soon',
    ],
    'Potential listings': [
      'Potential listings',
      'Foreclosed',
      'Pre-Foreclosure',
      'Make Me Move',
    ],
    'For Rent': ['For Rent'],
    'Recently sold': ['Recently sold'],
    _________________________: ['Open House only', 'Pending & Under Contract'],
}

HTML代码(角度材料):

<mat-optgroup
          *ngFor="let listingOptions of (filterListingTypeItems | keyvalue)"
          [label]="listingOptions.key"
        >
          <mat-option
            *ngFor="let listingOption of listingOptions.value"
            [value]="listingOption"
            >{{ listingOption }}</mat-option
          >
</mat-optgroup>

it becomes like that (img)

2 个答案:

答案 0 :(得分:0)

您不是创建数组而是创建对象。因此,首先没有顺序。

如果需要订单,请创建一个数组而不是对象。

filterListingTypeItems = [
  {
    key: 'For sale',
    value: [
      'For sale',
      'By Agent',
      'By ownre',
      'New Construction',
      'Foreclosures',
      'Coming Soon',
    ]
  },
  ...
]

答案 1 :(得分:0)

您可以创建一个在ts组件文件中返回0的函数。

function returnZero() {
return 0
}

在模板文件中

<td *ngFor="let item of cfValues | keyvalue : returnZero">