Chr*_*ing 5 drag-and-drop angular-material angular
我正在使用新的 Angular 7 Material CDK 拖放功能将项目从一个列表移动到另一个列表,并且在移动这些项目时视觉上一切都在晃动,但是当通过列表更改项目时,我收到一条错误消息,说无法获取属性(列表数组)来自未定义,即使我使用的是“item?.array”的东西
在构造函数中:
this.userService.getUserById('some-user-id').subscribe(user => {
this.user1 = user;
console.log(user1.route.routePoints); // I see the array in log
});
this.userService.getUserById('some-other-user-id').subscribe(user => {
this.user2 = user;
console.log(user2.route.routePoints); // I see the array in log
});
Run Code Online (Sandbox Code Playgroud)
在这里,将项目从列表拖到另一个列表时,出现错误“无法读取未定义的属性‘routePoints’”
<div cdkDropList #routeA="cdkDropList" cdkDropListOrientation="horizontal"
[cdkDropListData]="user1?.route?.routePoints"
class="list" (cdkDropListDropped)="drop($event, false, user1)"
[cdkDropListConnectedTo]="[queue, routeB]">
Run Code Online (Sandbox Code Playgroud)
这是拖动代码:
drop(event: CdkDragDrop<RoutePoint[]>, fromQueue: boolean = false, user: User) {
if (event.previousContainer === event.container) {
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
} else {
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
}
this.userService.updateUser(user);
}
Run Code Online (Sandbox Code Playgroud)
正如 marcinolawski @ https://github.com/angular/components/issues/15948提到的,原因是:
问题是 _DragRef.initialContainer == 未定义。这是因为 _DragRef.initializeDragSequence() 的调用早于 _DragRef.withDropContainer()。_initializeDragSequence() 基于 _dropContainer 初始化 _initialContainer,_dropContainer 由 _withDropContainer() 初始化,但因为 _initializeDragSequence() 比 _withDropContainer() 调用早,所以 _initialContainer 设置为 undefined。更多信息:https : //github.com/angular/components/blob/master/src/cdk/drag-drop/drag-ref.ts
一个丑陋但可行的解决方法是在 AfterViewChecked 上触发更改检测,如下所示(由 lukaszgodula @ 上面的同一个 github):
ngAfterViewChecked() {
this.cdRef.detectChanges();
}
Run Code Online (Sandbox Code Playgroud)
当然还有将 ChangeDetectorRef 注入到组件中:
constructor(
private cdRef: ChangeDetectorRef
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5766 次 |
| 最近记录: |