2017-02-03 103 views
0

ngOnInit()方法中,我從緩存中查找對象,然後嘗試執行該對象的類中定義的方法。Angular 2抱怨modelClass.doSomething不是函數

它看起來像

ngOnInit() { 
    let modelClass: ModelClass = cache.modelClass; 
    modelClass.doSomething(); 
} 

和模型類的定義是類似

export class ModelClass{ 
    constructor(
     public property: string 
    ){} 

    doSomething(){ 
     //doing something here 
    } 
} 

但是,當該組件被加載和其ngOnInit()被調用的方法,還有一個modelClass.doSomething()的錯誤,如 modelClass.doSomething不是函數。

那麼爲什麼ModelClass的方法沒有被識別?

+0

嘗試記錄緩存並記錄cache.modelClass。否則將需要更多信息 –

回答

0

你確定cache.modelClass是在那個點上定義的嗎?您可能試圖在空對象上調用該方法。

在打字稿中,聲明默認是公開的,所以該方法應該公開給你打電話。

0

最有可能的cache.modelClass不會返回ModelClass的一個實例,但其他東西。您可以添加如下支票:

let modelClass: ModelClass = cache.modelClass instanceof ModelClass ? cache.modelClass : new ModelClass();