• 装饰器/注解 就是一个函数
  • 但它是一个返回函数的函数
  • 它是TypeScript 的一个特性,而非Angular 的特性
  @Emoji() result = 'Hello';

export function Emoji() {
  return (target: object, key: string) => {
    let val = target[key];

    const getter = () => {
      return val;
    };

    const setter = (value: string) => {
      val = `/笑哭 ${value} /笑哭`;
    };

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

 

<p (click)="handleClick()">你好</p>

@Confirmable('确定执行当前操作?')
  handleClick() {
    console.log('点击已执行');
  }

export function Confirmable(message: string) {
  return (target: object, key: string, descriptor: PropertyDescriptor) => {
    const original = descriptor.value;
    descriptor.value = function (...args: any) {
      const allow = window.confirm(message);
      if (allow) {
        const result = original.apply(this, args);
        return result;
      }
      return null;
    };
    return descriptor;
  }
}

相关文章:

  • 2021-08-05
  • 2021-05-18
  • 2022-12-23
  • 2021-10-24
  • 2021-05-20
  • 2022-12-23
  • 2022-12-23
  • 2021-05-28
猜你喜欢
  • 2022-12-23
  • 2021-08-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-10
相关资源
相似解决方案