Angular:访问组件模板内部的外部静态类

时间:2017-11-29 14:24:28

标签: angular typescript

假设我有一个带有相应类的角度分量。

@Component({
  selector: "test",
  template: `       whatever    `
})

export class TestComponent
{}

然后我有一个带有静态成员的类(绑定到类而不是实例)。

export class Config
{
    public static foo () : string
    {  return "blabla"; }
}

有没有办法可以在我的组件模板中调用Config.foo?

template: ` {{ Config.foo () }} `

如果我将它包装在TestComponent中并在我的组件中调用它,它就可以工作。

template: `{{ myfoo () }}`
...
export class TestComponent
{
  myfoo ()
  { return Config.foo (); }
}

但那不是我想要的。

Config应该保存全局配置信息,我不想在很多组件中包装任何信息。

还是有更优雅的方式吗?我考虑过注入(单例)但我更喜欢静态方式更多的无状态常量信息。

谢谢!

2 个答案:

答案 0 :(得分:4)

这是正常的,您无法在模板中调用Config.foo方法。

在模板内部,双括号({{}})内的表达式“作用于”组件本身:this被隐含地放在表达式上。

我在这种情况下经常使用的是“getters”,如下所示:

get configFoo(): string { return Config.foo(); }

在模板中,它看起来像这样:

{{configFoo}}

答案 1 :(得分:2)

html模板无法直接访问静态成员。这些元素仅用于创建单音对象并直接访问其他类。所以我们必须创建一个非静态方法来返回它在html模板中的值。模板以“this”为界,它与该模板相关联。