2017-03-01 72 views
0

这是例如:如何在静态对象中调用类函数?

export class cls1{ 
    str1:string; 

    constructor(s:string){ 
    this.str1 = s; 
    } 

    func1(){ 
    return "hello " + this.str1; 
    } 
} 

export class AppComponent { 

static obj2:cls1= JSON.parse(`{"str1":"efgh"}`); 

AppComponent.obj2.func1(); // func1 is not a function 
} 

的问题是该函数成员不在静态对象熟悉。 我得到错误:FUNC1不是一个函数

+0

我不是一个角度专家,但obj2似乎是一个实例,所以你不能调用该方法。请尝试cls1.func1() – Dexion

+0

谢谢,但cls1不是静态的,所以每当有一个实例它不存在。 – yoram

回答

0

究竟是什么你想在这里做什么?这看起来不像我能想到的任何用例。或者你只是搞乱,尝试与打字稿?一个函数如何从一个JSON.parse调用中神奇地出现,它只包含一个对象:)?

不管怎么说,最近我可以拿出来获得该功能的工作是通过改变你的代码如下:

class cls1{ 
    str1:string; 

    constructor(s:string){ 
    this.str1 = s; 
    } 

    func1(){ 
    alert(this.str1); 
    } 
} 

class AppComponent { 

    static obj2:cls1= new cls1(JSON.parse('{"str1":"efgh"}').str1); 
} 

AppComponent.obj2.func1(); // alert: 'efgh' 

jsFiddle

让我们忽略的编码风格的错误,现在,和上你的方式:)

+0

谢谢,JSON.parse是例如。 我有一个非常大的静态对象有很多的成员和函数,我想打开关于现有成员值的函数 – yoram

+0

而且,你的代码接受错误:(SystemJS)cls1不是一个构造函数。 – yoram

+0

@yoram我已经更新了我的答案 – PierreDuc