装饰器/注解 就是一个函数 但它是一个返回函数的函数 它是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