Angular 6 Property decorator проблема - PullRequest
       7

Angular 6 Property decorator проблема

0 голосов
/ 27 декабря 2018

Эй, я пытаюсь проверить пример кода декоратора, как показано ниже.Это выглядит прямо, но когда я запускаю его, я получаю следующую ошибку "не могу прочитать свойство" имя "из неопределенного. Кажется, что" это "не может ссылаться на текущий контекст. Любая идея?

class Customer { 
  @hashify 
  public firstname: string; 
  public lastname: string; 

  constructor(firstname : string, lastname : string) { 
    this.firstname = firstname; 
    this.lastname = lastname; 
  } 
}

function hashify(target: any, key: string) { 
  var _value = this[key]; 

  var getter = function () { 
        return '#' + _value; 
  }; 

  var setter = function (newValue) { 
    _value = newValue; 
  }; 

  if (delete this[key]) { 
    Object.defineProperty(target, key, { 
      get: getter, 
      set: setter, 
      enumerable: true, 
      configurable: true 
    }); 
  } 
} 

1 Ответ

0 голосов
/ 27 декабря 2018

Единственная проблема, с которой сталкивается ваш код, это то, что значение this неверно.Изменив это значение на target, ваш код работает отлично.

class Customer { 
  @hashify 
  public firstname: string; 
  public lastname: string; 

  constructor(firstname : string, lastname : string) { 
    this.firstname = firstname; 
    this.lastname = lastname; 
  } 
}

function hashify(target: any, key: string) { 
  var _value = target[key]; 

  var getter = function () { 
        return '#' + _value; 
  }; 

  var setter = function (newValue) { 
    _value = newValue; 
  }; 

  if (delete target[key]) { 
    Object.defineProperty(target, key, { 
      get: getter, 
      set: setter, 
      enumerable: true, 
      configurable: true 
    }); 
  } 
} 

В вашем примере это происходит потому, что параметр target в интерфейсе PropertyDecorator является ссылкой на объект, в которомДекоратор применяется.

...