装饰器/注解 就是一个函数 但它是一个返回函数的函数 它是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; } }
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did222726