Невозможно прочитать свойство undefined - cdkDropListData drag-drop Угловой материал - PullRequest
0 голосов
/ 21 декабря 2018

Я использую новую функцию перетаскивания CDK Angular 7 Material, чтобы перемещать элемент из списка в другой, и визуально все качается при перемещении, но при изменении элемента через списки я получаю сообщение об ошибке:свойство (массив списка) из неопределенного, даже если я использую вещь "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
});

Здесь я получаю ошибку "Cannotчитать свойство 'routePoints' из неопределенного "при перетаскивании элемента из списка в другой

<div cdkDropList #routeA="cdkDropList" cdkDropListOrientation="horizontal" 
[cdkDropListData]="user1?.route?.routePoints"
class="list" (cdkDropListDropped)="drop($event, false, user1)" 
[cdkDropListConnectedTo]="[queue, routeB]">

Вот код перетаскивания:

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);
}

1 Ответ

0 голосов
/ 21 декабря 2018

Обязательно сначала инициализируйте массив user1

user: yourType = {};

this.userService.getUserById('some-user-id').subscribe(user => {
  this.user1 = user;
  console.log(user1.route.routePoints); // I see the array in log
}); 
...