Angular 2+使用Alertifyjs错误TypeError:无法读取属性

时间:2018-08-21 11:09:54

标签: angular

declare var alertify:any;
export class ExamplComponent implements OnInit {
    itemList = []

    deleteItem(idx) {
    alertify.confirm('Are you sure delete this record.', function() {
      this.itemList.slice(idx,1);
    })
  }
}
  

html页面

< div *ngFor="let item of itemList;let indx = index" style="text-align: center">
    <button class="text-btn text-danger" (click)="deleteItem(indx)" ><i class="fa fa-trash"></i></button>
</div>
  

源库:https://alertifyjs.com/confirm.html

     

错误消息

ERROR TypeError: Cannot read property 'itemList' of undefined

2 个答案:

答案 0 :(得分:1)

使用fat arrow =>代替function

deleteItem(idx) {
    alertify.confirm('Are you sure delete this record.', ()=> {
      this.itemList.slice(idx,1);
    })
}

答案 1 :(得分:1)

问题出在作为参数传递给alertify.confirm()的函数上。在这种情况下,当您使用function()声明函数时,它具有自己的this;因此,在编写this.itemList时,您指向的是undefined,因为它在您的函数中不存在。

尝试改用箭头功能(() => {}),它们从当前作用域继承this,因此可以安全地在回调函数中使用。

deleteItem(idx) {
    alertify.confirm('Are you sure delete this record.', () => {
      this.itemList.slice(idx, 1)
    })
}