2016-09-26 67 views
2

我在下面,很簡單angular2服務: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

從哪裏調用'initialize(geomotry)'? – Martin

回答

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)); 
+0

謝謝你,你的解決方案工作得很好。 – netik

0

將代碼移至ngOnInit()而不是構造函數。你必須實現OnInit。