angular 装饰器(注解)

时间:2019-12-16
本文章向大家介绍angular 装饰器(注解),主要包括angular 装饰器(注解)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  • 装饰器/注解 就是一个函数
  • 但它是一个返回函数的函数
  • 它是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;
  }
}

原文地址:https://www.cnblogs.com/webmc/p/12051047.html