我有两个装饰器。一个类装饰器和一个方法装饰器。类装饰器定义了我想在方法装饰器中访问的元数据。
类装饰器:
function ClassDecorator(topic?: string): ClassDecorator {
return (target) => {
Reflect.defineMetadata('topic', topic, target);
// I've also tried target.prototype instead of target
return target;
};
}
方法装饰器:
interface methodDecoratorOptions {
cmd: string
}
function MethodDecorator(options: decoratorOptions) {
return function (target, propertyKey: string, descriptor: PropertyDescriptor) {
// HERE IS MY PROBLEM
console.log('metaData is: ', Reflect.getMetadata('topic', target));
}
}
这是我的类定义:
@ClassDecorator('auth')
export class LoginClass {
@MethodDecorator({
cmd: 'login'
})
myMethod() {
console.log('METHOD CALLED');
}
}
问题:
MethodDecorator 的以下行返回metaData is: undefined
. 为什么它是未定义的?
console.log('metaData is: ', Reflect.getMetadata('topic', target));
问题:
如何从 MethodDecorator 访问 ClassDecorator 定义的元数据?