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;
  }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM