Typescript 从回调函数访问类数据

Typescript 从回调函数访问类数据,typescript,angular,Typescript,Angular,下面的指令向MessageBus类注册侦听器。它在调用分派函数时执行已注册的回调。我需要从回调中访问“dragZoneElems”,并对其执行操作。请就如何做到这一点提供建议。目前它表示dropZoneElems=undefined,因为该数据不在回调范围内。但是,数据是存在的,并且不是未定义的 export class DragZoneDirective implements OnInit{ private _messageBus : IMessageBus @Input() d

下面的指令向MessageBus类注册侦听器。它在调用分派函数时执行已注册的回调。我需要从回调中访问“dragZoneElems”,并对其执行操作。请就如何做到这一点提供建议。目前它表示dropZoneElems=undefined,因为该数据不在回调范围内。但是,数据是存在的,并且不是未定义的

export class DragZoneDirective implements OnInit{
   private _messageBus : IMessageBus

   @Input() dragZoneElems: Object[];
   constructor() {
      this._messageBus = MessageBus;
   }

   ngOnInit(){
    this._messageBus.listen("dragStart", function(val) {
        console.log("DragStart", this.dragZoneElems);
        let index = this.dragZoneElems.indexOf(val);
        if(index > -1)
            this.dragZoneElems.slice(index, 1);
    });
    this._messageBus.listen("dragStop", function(val) { console.log("DragStop"); });
   }
 }
消息总线-

static dispatch(event: string, info?: any): void {
     this.listeners
        .forEach((l) => {
           if (l["event"] === event) {
               l["cb"](info);
           }
        });
}

您需要使用箭头函数才能使用词汇表(它对应于您的组件实例):

this.\u messageBus.listen(“dragStart”,(val)=>{/-1)
this.dragzonelems.slice(索引,1);
});
有关此箭头函数词法的更多提示,请参见此链接:


您需要使用箭头函数才能使用词汇表(它对应于您的组件实例):

this.\u messageBus.listen(“dragStart”,(val)=>{/-1)
this.dragzonelems.slice(索引,1);
});
有关此箭头函数词法的更多提示,请参见此链接:


嗨,蒂埃里,今天你在我身边真是太幸运了。谢谢我需要帮助回答另一个问题,你能看一下吗。嗨,蒂埃里,今天你在我身边真是太幸运了。谢谢我需要帮助回答另一个问题,你能看一下吗。
this._messageBus.listen("dragStart", (val) => { // <--------
    console.log("DragStart", this.dragZoneElems);
    let index = this.dragZoneElems.indexOf(val);
    if(index > -1)
        this.dragZoneElems.slice(index, 1);
});