- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 cdk 拖放来重新排序 ngFor 列表,但是因为我不想在放置后为每个元素再次触发动画,所以我还想使用 trackby
问题是当我使用 trackby 时,拖动每次都会快速返回而不是停留在缩进的索引位置
<ng-container *ngIf="tabObj$ | async as tab">
<div
cdkDropList
[cdkDropListData]="memberList"
[cdkDropListConnectedTo]="bumble"
[cdkDropListDisabled]="isDisabled"
(cdkDropListDropped)="drop($event)"
[id]="tabid"
[style]="template.style">
<div class="indication" (click)="handleInfoClick(tab)">{{ALTtabid}} -- {{tabid}}</div>
<sss-node
*ngFor="let pointerobj of memberList; let i = index; trackBy: identify;"
cdkDrag
[cdkDragData]="pointerobj"
class="cdk-drag-animating"
[ngClass]="pointerobj._id"
[loading]="pointerobj.loading"
[ancestry]="getAncestry(pointerobj, i)"
[bubbleUp]="handleBubble.bind(this)">
</sss-node>
</div>
</ng-container>
drop(event: CdkDragDrop<string[]>) {
console.log("this.tabid", this.tabid);
console.log("event", event);
this.goforward(event);
console.log("boo");
}
goforward(event:any){
if (event.previousContainer === event.container) {
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
// this.memberList.splice(event.currentIndex, 0, this.memberList.splice(event.previousIndex, 1)[0]);
} else {
// transferArrayItem(event.previousContainer.data,
// event.container.data,
// event.previousIndex,event.currentIndex);
}
}
identify = (index, pointer: Pointer) => { return pointer.instance; }
最佳答案
pointer.instance
仍然是一个对象,所以 trackBy
不知道它被改变了。
试试这个:
identify = (index, pointer: Pointer) => { return pointer.instance.id; }
或您实例上的任何其他 ID。
关于使用 trackby 的 Angular Drag and Drop 正在迅速恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67156105/
我正在尝试将 async 管道与 *ngFor 一起使用,以显示异步获取的项目数组。 {{item.text}} ngOnInit() { // very simple h
我有一个 *ngFor用于 array 的指令对象,它们具有相当多的属性。 我要这个 *ngFor仅在更改其中三个属性时才更新,但根据 documentation在 TrackByFunction 上
我的组件有点像 {{user.emailId}}× trackBy 函数为 public
最近,当您没有在每个 *ngFor 上实现 trackBy 函数时,Angular styleguide-lint-extender“Codelyzer”会发出警告。我想知道为什么这会被视为一个问题。
当我阅读有关 ngFor 和 trackBy 的文档 ( https://angular.io/api/common/NgForOf ) 时,我以为我明白 Angular 只会在 trackBy 返回
我想通过传递属性名称来跟踪 ngFor 项目来创建一个唯一的 trackBy 指令,这是代码: import { NgForOf } from '@angular/common'; import {
我想用trackBy提高长列表的性能。此列表的数据在更改时应该是不可变的,并通过异步管道提供给模板。虽然我正在使用 trackBy功能,每次我发出新值时都会重新呈现整个列表。即使数组内的对象与相同的
我在我的 ngFor 中激活了 trackBy 并且我确认它被调用并且正在工作,但我仍然注意到 DOM 在我的浏览器中重新呈现,这导致行闪烁。这里发生了什么?在 Angular1 中,我可以在我的浏览
在 ngFor 中使用“trackBy: index”是不是一个好习惯? 例如: {{error}} 在所有 *ngFor 中每次都需要使用 trackBy 来提高性能,否则我们可以忽略它。 如果
trackBy 函数(例如在 ngFor 中)提供两个参数:index 和 item(来自被迭代的集合)。有没有办法将附加信息(作为参数?)传递给 trackBy 函数? 我的情况是,我可能会为我的组
我想使用 ngFor trackBy 索引。我找到了类似下面的方法 @Component({ selector: 'my-app', template: ` {{item
我真的不明白我应该从 trackBy 返回什么。根据我在网上看到的一些示例,我应该返回对象上某些属性的值。这样对吗?为什么要获取 index 作为参数? 例如,在下面的情况下: Component.c
我的印象是 trackBy 函数仅在尝试优化 *ngFor 的性能时使用,因此如果发生变化,DOM 不会待重建。 但是,最近,我遇到了一种情况,trackBy 实际上修复了错误的行为。 以此为例:ht
我有一个更大的项目,我有 4 个嵌套的 *ngFor。所以创作大约有 200 行,我认为分享不会有帮助,所以我会尽可能地解释它。问题 刷新对象后,元素被销毁并重新创建。这会导致性能问题(我只关心 0.
在 Angular 中,*ngFor 是否需要 trackBy 函数?看了几篇here , here , here , 和 here也就是说使用 trackBy 会提高性能并具有更好的内存管理。但我想
我想使用 cdk 拖放来重新排序 ngFor 列表,但是因为我不想在放置后为每个元素再次触发动画,所以我还想使用 trackby 问题是当我使用 trackby 时,拖动每次都会快速返回而不是停留在缩
这个问题在这里已经有了答案: function gets called several times (3 个回答) 2年前关闭。 我已经开始使用 trackBy对于一些 ngFor在我的应用程序中进行
我有一个项目,前端是通过@angular/cli: 1.1.3开发的。一切工作正常,直到我尝试在产品模式下编译项目(ng build -prod)。在我使用 *ngFor 指令和 trackBy to
我正在 Angular 2 中创建一个演示应用程序。但是在执行此操作时,我遇到了这个错误: core.umd.js:3491 EXCEPTION: Uncaught (in promise): Err
在下面的例子中: https://stackblitz.com/edit/track-by-reuse?file=src/app/app.component.ts 如果将列数从 4 更改为 3,则具有
我是一名优秀的程序员,十分优秀!