Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2 NgFor内部树模型:删除然后添加元素时顺序错误_Javascript_Typescript_Angular - Fatal编程技术网

Javascript Angular2 NgFor内部树模型:删除然后添加元素时顺序错误

Javascript Angular2 NgFor内部树模型:删除然后添加元素时顺序错误,javascript,typescript,angular,Javascript,Typescript,Angular,我在玩angular 2 alpha 44 我有一个树模型,并使用递归性来显示它。 每个组包含“标准”、“段”和其他“组”。 我们可以在任何级别删除和添加所有这些元素 当我删除元素,然后在同一级别上添加其他元素时,会出现一种奇怪的行为。 新的顺序是错误的,新元素得到了一个更大的位置属性,数组在此属性上排序,但它们出现在元素被删除的位置 新阵列将记录在控制台中,并以正确的顺序显示。 如果使用“显示/隐藏”按钮删除和添加所有树,视图现在的顺序正确 你可以: 移除第一个元素 添加新元素 请注意,视图中

我在玩angular 2 alpha 44

我有一个树模型,并使用递归性来显示它。 每个组包含“标准”、“段”和其他“组”。 我们可以在任何级别删除和添加所有这些元素

当我删除元素,然后在同一级别上添加其他元素时,会出现一种奇怪的行为。 新的顺序是错误的,新元素得到了一个更大的
位置
属性,数组在此属性上排序,但它们出现在元素被删除的位置

新阵列将记录在控制台中,并以正确的顺序显示。 如果使用“显示/隐藏”按钮删除和添加所有树,视图现在的顺序正确

你可以:

  • 移除第一个元素
  • 添加新元素
  • 请注意,视图中的顺序不正确,并且与视图中的顺序不相同 控制台日志
  • 在“显示/隐藏”按钮上单击2次
  • 查看视图中的顺序是否正确
  • ng1
    trackBy
    和ng2
    NgFor
    有类似的功能吗?
    我在源代码中找不到任何关于它的信息。

    trackBy
    是在2.0.0-beta.3中添加的

    另见

    使用模板元素:

    @Component(
      template: `
       <template ngFor let-item [ngForOf]="items" [ngForTrackBy]=customTrackBy">
          {{item}}
       </template>
       `
    )
    class MyComponent {
      customTrackBy(index: number, obj: any): any {
        return index;
      }
    }
    
    @组件(
    模板:`
    
    我添加了管道“订单”,也没有帮助…非常有趣的问题。如果使用
    的话,这似乎是
    表单的问题。不完全确定,但是你可以在他们的回购中查找,如果你没有发现任何新问题。thx@EricMartinez,你是对的,它与其他语法一起工作。我在eir repo并发布了我的plunker。ngForTrackBy的作用是什么?指导
    ngFor
    关于身份检查。如果数组包含重复项,
    ngFor
    无法正常工作。使用自定义
    trackBy
    可以覆盖默认行为。tx找到了我需要的:tx一如既往地支持。。。
    @Component(
      template: `
       <div *ngFor="let item of items; trackBy:customTrackBy">
          {{item}}
       </div>
       `
    )
    class MyComponent {
      customTrackBy(index: number, obj: any): any {
        return index;
      }
    }