@Maximus В случае, когда мы не знаем, в каком формате была построена библиотека. Вот почему Angular использует все три варианта
я использую декоратор в своем классе, декоратор оценивается при импорте класса. Вот небольшой пример:
@NgModule({ ... })
export class BModule { ... }
Транспортируется как:
var BModule = (function () {
function BModule() {
}
BModule = __decorate([ <---------- decorators are applied here
core_1.NgModule({...})
], BModule);
return BModule;
}());
exports.BModule = BModule;
Тем не менее, когда модуль или любой другой декоратор применяется в@angular
В связке вывод выглядит следующим образом:
var HttpClientModule = (function () {
function HttpClientModule() {
}
return HttpClientModule;
}());
HttpClientModule.decorators = [
{ type: _angular_core.NgModule, args: [{ ... },] },
];
Как видите, декораторы здесь не применяются. Они просто сохраняются вdecorators
свойство. Почему он отличается от моего кода?
Причина, по которой я спрашиваю, заключается в том, что при импорте декорированных классов я ожидаю, что к ним будут применены декораторыReflect
возможно:
const providers = Reflect.getOwnMetadata('annotations', BModule);
Тем не менее, это не работает таким образом с украшенными классами из@angular
пакеты.