Quando e como o decorador se aplica às classes decoradas dos pacotes @angular
Se eu usar um decorador em minha classe, o decorador será avaliado ao importar a classe. Aqui está o pequeno exemplo:
@NgModule({ ... })
export class BModule { ... }
Transpiled como:
var BModule = (function () {
function BModule() {
}
BModule = __decorate([ <---------- decorators are applied here
core_1.NgModule({...})
], BModule);
return BModule;
}());
exports.BModule = BModule;
No entanto, quando o módulo ou qualquer outro decorador é aplicado no@angular
agrupa a saída é a seguinte:
var HttpClientModule = (function () {
function HttpClientModule() {
}
return HttpClientModule;
}());
HttpClientModule.decorators = [
{ type: _angular_core.NgModule, args: [{ ... },] },
];
Como você pode ver, os decoradores não são aplicados aqui. Eles são salvos apenas nodecorators
propriedade. Por que é diferente do meu código?
A razão pela qual estou perguntando é que, ao importar minhas aulas decoradas, espero que os decoradores sejam aplicados e, portanto, useReflect
é possível:
const providers = Reflect.getOwnMetadata('annotations', BModule);
No entanto, não funciona dessa maneira com aulas decoradas do@angular
pacotes.