2017-03-14 91 views
0

我想要使用一个离子列表的这段代码离子项目滑动时的错误:离子2离子项目滑动更新对象

<ion-list> 
<ion-item-sliding *ngFor="let device of devices" class="item-sliding-joueur-balise"> 
    <ion-item class="item-joueur-balise" *ngIf="device.player"> 
    <ion-avatar item-left><img left="" src={{device.player.urlImage}}/></ion-avatar> 
    <ion-label>{{device.player.name}}</ion-label> 
    <ion-label right>Balise {{device.id}}</ion-label> 
</ion-item> 
<ion-item-options side="right"> 
    <button ion-button class="button-edit-balise" (click)="handleEditBalise(device)"> 
    <ion-icon class="icon-action" name="md-create"></ion-icon> 
    <label class="label-action">Balise</label> 
    </button> 
    <button ion-button color="danger" style="width:80px" (click)="deleteDevice(device)"> 
    <ion-icon class="icon-action-size" name="trash"></ion-icon> 
    <label class="label-action">Supprimer</label> 
    </button> 
</ion-item-options> 
</ion-item-sliding> 

但是当我点击上的删除按钮执行deleteDevice(设备) ,我得到以下错误:

Uncaught TypeError: Cannot read property 'setElementStyle' of undefined 
    at ItemSliding._setOpenAmount (item-sliding.js:396) 
    at ItemSliding.close (item-sliding.js:477) 
    at ItemSlidingGesture.closeOpened (item-sliding-gesture.js:104) 
    at ItemSlidingGesture.canStart (item-sliding-gesture.js:50) 
    at ItemSlidingGesture.PanGesture.pointerDown (drag-gesture.js:79) 
    at PointerEvents.handleTouchStart (pointer-events.js:43) 

的deleteDevice功能是:

deleteDevice(device: Device): void { 
    device.player= null; 
    } 

我似乎是当我尝试修改列表的设备元素时,我得到这个错误,但我不知道如何解决它,为什么会发生。

有什么想法吗? (我不想在设备上使用拼接功能,但将设备的播放器设置为空)

谢谢。

回答

0

我不能现在这样评论...

我的想法,以帮助你的是,如果你传递数组devices的关键和删除实际device,因此函数看起来是这样的:

deleteDevice(key) { 
    this.devices.splice(key, 1); 
} 
+1

是的,我知道该拼接工程,但那不是我想要的。我只是想让该设备的播放器为空,以便它不再与其链接。 – batmaniac

+1

@batmaniac很好,也许对于其他一些用户应该像他们想要的那样工作,有其他选择是很好的。我希望我已经帮助 –

+0

谢谢你的帮助:) – batmaniac

1

OK,这个问题从* ngIf = “device.player” 来到我[隐藏] = “device.player!” 代替它和它的工作就像一个魅力;)