Angular: Как получить ElementRef от Custom Decorator - PullRequest
0 голосов
/ 14 октября 2018

Я реализую декоратор для связывания переменных хоста CSS в Angular5.Тем не менее, я не могу реализовать это так, как следующий код.Могу ли я определить ElementRef из декоратора?

export function HostCssVariable(cssVariableName?: string): any {
  return (target, propertyKey: string, descriptor: PropertyDescriptor) => {
    let _value: any;
    return {
      set: function(value) {
        // this.el is defined by TestComponent's constructor
        // Can I define ElementRef in decorator?
        this.el.nativeElement.style.setProperty(`--${cssVariableName}`, value);
        _value = value;
      },

      get: function() {
        return this.el.nativeElement.style.getProperty ?
          this.el.nativeElement.style.getProperty(`--${cssVariableName}`): _value
      },

      enumerable: true,
      configurable: true,
    }
  }
}


@Component({
  selector: 'test-component',
  templateUrl: ...,
  styleUrls: [...]
})
export class TestComponent {

  @HostCssVariable('hoge')
  public hoge: number = 2;

  constructor(private el: ElementRef) { }
}

спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

Я не думаю, что есть способ внедрить ElementRef компонента в ваш пользовательский декоратор, потому что ваш декоратор - это Property Decorator, а не Class Decorator.

...