Angular2 - Class属性未定义,即使它已被设置

时间:2016-09-26 09:57:47

标签: javascript angular typescript

我有以下非常简单的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未定义。

这里的问题是什么?

2 个答案:

答案 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。