Angular 2抱怨modelClass.doSomething不是一个函数

时间:2017-02-03 21:54:24

标签: javascript angular typescript

ngOnInit()方法中,我从缓存中查找对象,然后尝试执行该对象的类中定义的方法。

看起来像是

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'方法没有认识到?

2 个答案:

答案 0 :(得分:0)

您确定此时已定义cache.modelClass吗?您可能正在尝试在null对象上调用该方法。

在打字稿中,默认情况下声明是公开的,因此应该公开该方法以供您调用。

答案 1 :(得分:0)

最有可能cache.modelClass不返回ModelClass的实例,而是返回其他内容。您可以像这样添加支票:

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