如何在角度2中绑定HTML中组件的静态变量?

San*_*gde 61 typescript angular2-services angular

我想在HTML页面中使用组件的静态变量.如何将组件的静态变量与角度2中的HTML元素绑定?

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Rx';
@Component({
  moduleId: module.id,
  selector: 'url',
  templateUrl: 'url.component.html',
  styleUrls: ['url.component.css']
})
export class UrlComponent {

  static urlArray;
  constructor() {
  UrlComponent.urlArray=" Inside Contructor"
  }
}
Run Code Online (Sandbox Code Playgroud)
<div>
  url works!
   {{urlArray}}
</div >
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 92

组件模板中的绑定表达式的范围是组件类实例.

你不能直接引用全局变量或静态.

作为解决方法,您可以向组件类添加getter

export class UrlComponent {

  static urlArray;
  constructor() {
    UrlComponent.urlArray = "Inside Contructor";
  }

  get staticUrlArray() {
    return UrlComponent.urlArray;
  }

}
Run Code Online (Sandbox Code Playgroud)

并使用它像:

<div>
  url works! {{staticUrlArray}}
</div>
Run Code Online (Sandbox Code Playgroud)

  • 不,你绝对不需要吸气剂上的`()`,也不应该在那里.`get staticUrlArray(){}`不是`public staticUrlArray(){}`一个像`staticUrlArray`一样直接访问,另一个像`staticUrlArray()`这样的方法. (4认同)

小智 27

要避免Angular调用在每个循环中获取staticUrlArray,可以在组件的公共范围中保存类引用:

export class UrlComponent {

  static urlArray;

  public classReference = UrlComponent;

  constructor() {
    UrlComponent.urlArray = "Inside Contructor";
  }

}
Run Code Online (Sandbox Code Playgroud)

然后你可以直接使用它:

<div>
  url works! {{ classReference.urlArray }}
</div>
Run Code Online (Sandbox Code Playgroud)

  • 对于我用于复选框状态的简单变量,此方法避免了对get函数的数十次调用.如果在一个循环中使用(例如表的行),那可能真的是有害的.我会说这是更好的答案,语法更简单一些. (2认同)

mme*_*mey 5

您也可以只声明类类型的字段,如下所示:

export class UrlComponent {
  static urlArray;

  UrlComponent = UrlComponent;
  
  constructor() {
    UrlComponent.urlArray=" Inside Contructor"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下前缀引用静态变量:

<div>
  url works! {{UrlComponent.urlArray}}
</div>
Run Code Online (Sandbox Code Playgroud)

这对于直接在模板中引用诸如枚举之类的东西或诸如控制台之类的对象也是必要的。