Pesquisa de site

typescript - Como vincular variável estática de componente no HTML no Angular 2?


Quero usar uma variável estática de um componente em uma página HTML. Como vincular a variável estática do componente com um elemento HTML no Angular 2?

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"
  }
}
<div>
  url works!
   {{urlArray}}
</div >

Resposta #1

O escopo das expressões vinculativas em um template de componentes é a instância da classe do componente.

Você não pode se referir a globais ou estáticos diretamente.

Como solução alternativa, você pode adicionar um getter à classe do seu componente

export class UrlComponent {

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

  get staticUrlArray() {
    return UrlComponent.urlArray;
  }

}

e use-o assim:

<div>
  url works! {{staticUrlArray}}
</div>

Resposta #2

Para evitar que o Angular chame get staticUrlArray a cada ciclo, você pode salvar uma referência de classe no escopo público do componente:

export class UrlComponent {

  static urlArray;

  public classReference = UrlComponent;

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

}

E então você pode usá-lo diretamente:

<div>
  url works! {{ classReference.urlArray }}
</div>

Artigos relacionados