我有以下非常简单的angular2服务:
@Injectable()
export class DrawingService {
private _draw:Draw;
constructor(private mapSvc:MapService) {}
initialize(geometry: GeometryType):void {
this._draw = new Draw(this.mapSvc.getMap());
this._draw.on("draw-end", this.addGraphic);
this._draw.activate(geometry);
}
addGraphic(evt):void {
this._draw.deactivate();
}
}
在initialize
中,我将方法addGraphic
设置为回调。现在的问题是,在addGraphic
方法执行中,this._draw
未定义。
这里的问题是什么?
答案 0 :(得分:1)
如果您传递方法参考,例如
this._draw.on("draw-end", this.addGraphic);
对this
的引用指向调用者函数。
如果您使用
this._draw.on("draw-end", this.addGraphic.bind(this));
它应该按预期工作。
或者您也可以使用箭头功能,但这需要重复参数(如果需要传递参数)。
this._draw.on("draw-end", (param) => this.addGraphic(param));
答案 1 :(得分:0)
将代码移动到ngOnInit()而不是构造函数。您必须实施OnInit。