如何使用Angular 8 keyvalue并与复杂对象进行比较

如何使用Angular 8 keyvalue并与复杂对象进行比较,angular,Angular,我有这个东西 { "id": 1, "paragraphText": "I'm some Paragraph Text", "paragraphName": "new paragraph", "paragraphPlacement": { "id": 1, "order": 1 } } { "id": 1, "paragraphText": "I'm another Paragraph Text", "paragraphName": "ol

我有这个东西

  {
  "id": 1,
  "paragraphText": "I'm some Paragraph Text",
  "paragraphName": "new paragraph",
  "paragraphPlacement": {
    "id": 1,
    "order": 1
  }
}
  {
  "id": 1,
  "paragraphText": "I'm another Paragraph Text",
  "paragraphName": "old paragraph",
  "paragraphPlacement": {
    "id": 1,
    "order": 2
  }
}
我正在尝试使用keyvalue管道对其进行排序

<div class="col-8">
<div *ngFor="let paragraph of offer.offerContent.paragraphs | keyvalue">
{{paragraph.paragraphName}} : {{paragraph.paragraphPlacement.order}}

据我所知,keyvalue需要一个key:value映射,但是angular文档说可以使用comparefn来比较复杂的对象,但是我找不到任何关于如何使用comparefn的文档或示例。因此,我的问题是如何使用comparefn在段落Placement:order value上对上述示例进行排序。

要获得预期的结果,请使用下面的选项,将键和值对与comparefn一起使用

问题: 在使用keyValue管道时,请使用paragration.value访问每个对象

 <div *ngFor="let paragraph of obj | keyvalue">
    {{paragraph.value.paragraphName}} :
    {{paragraph.value.paragraphPlacement.order}}
    <div>
若要按值对对象进行排序,请通过比较值使用下面的比较函数,并在比较相等值时返回1、-1和0

  sortOrder = (old, nw) => {
        if(old.value.paragraphPlacement.order < nw.value.paragraphPlacement.order){
          return 1
        }else{
          return -1
        }
  }
component.html:

工作代码示例

<div *ngFor="let paragraph of obj | **keyvalue** : **sortOrder**">
    {{paragraph.value.paragraphName}} : {{paragraph.value.paragraphPlacement.order}}
    <div>