Пользовательские аннотации вообще не вызываются в производственной сборке после обновления до Angular 9.
При тестировании с ng serve все работает как обычно.
В консоли нет ошибок.
Моя пользовательская аннотация:
@CustomSmartForm('calculatorForm')
@Component({
selector: 'calculator-form',
...
})
export class CalculatorFormComponent implements OnInit {...}
Функция, которая должна вызываться каждый раз, когда для компонента устанавливается аннотация:
import * as _ from 'lodash';
export function CustomSmartForm(formId: string) {
return (target: any) => {
const glb: any = window;
glb.__smart_form_definitions = glb.__smart_form_definitions || {};
const scope = glb.__smart_form_definitions;
_.set(scope, formId, target);
};
}
Но она не вызывается для все компоненты, и я не знаю почему.
Это происходит только в производственной сборке.
Используя loda sh, эта функция устанавливает определение класса для объекта scope по пути formId .
Из этого объекта я пытаюсь получить определения классов по formId позже в функции ниже:
function getCustomFormDefinition(formId: string): any {
const scope = (<any> window).__smart_form_definitions;
return scope && scope[formId];
}
Зависимости и dev-зависимости:
"dependencies": {
"@angular/animations": "^9.0.6",
"@angular/cdk": "^9.1.2",
"@angular/common": "^9.0.6",
"@angular/compiler": "^9.0.6",
"@angular/core": "^9.0.6",
"@angular/forms": "^9.0.6",
"@angular/localize": "^9.0.6",
"@angular/platform-browser": "^9.0.6",
"@angular/platform-browser-dynamic": "^9.0.6",
"@angular/router": "^9.0.6",
"@consultingwerk/smartcomponent-library": "^1.12.0",
"@consultingwerk/smartcomponents-jsdo-core": "^6.0.8",
"@fullcalendar/core": "^4.4.0",
"@progress/kendo-angular-buttons": "^5.2.3",
"@progress/kendo-angular-charts": "^4.1.3",
"@progress/kendo-angular-common": "^1.2.2",
"@progress/kendo-angular-dateinputs": "^4.2.2",
"@progress/kendo-angular-dialog": "^4.1.3",
"@progress/kendo-angular-dropdowns": "^4.2.5",
"@progress/kendo-angular-excel-export": "^3.1.3",
"@progress/kendo-angular-grid": "^4.6.4",
"@progress/kendo-angular-inputs": "^6.5.0",
"@progress/kendo-angular-intl": "^2.0.1",
"@progress/kendo-angular-l10n": "^2.0.1",
"@progress/kendo-angular-layout": "^4.2.3",
"@progress/kendo-angular-menu": "^2.0.2",
"@progress/kendo-angular-pdf-export": "^2.0.3",
"@progress/kendo-angular-popup": "^3.0.5",
"@progress/kendo-angular-ripple": "^2.0.1",
"@progress/kendo-data-query": "^1.5.2",
"@progress/kendo-drawing": "^1.6.0",
"@progress/kendo-theme-bootstrap": "^4.11.0",
"@progress/kendo-theme-default": "^4.13.0",
"angular2-text-mask": "^9.0.0",
"angular2-uuid": "^1.1.1",
"bootstrap": "^3.3.7",
"chart.js": "^3.0.0-alpha",
"core-js": "^2.6.0",
"font-awesome": "^4.7.0",
"hammerjs": "^2.0.8",
"jquery": "^3.3.1",
"moment": "^2.24.0",
"ng2-ace-editor": "^0.3.9",
"ngx-file-drop": "^8.0.8",
"primeicons": "^1.0.0",
"primeng": "^9.0.0",
"quill": "^1.3.7",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.3.3",
"ts-metadata-helper": "0.0.4",
"tslib": "^1.10.0",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.900.6",
"@angular/cli": "~9.0.6",
"@angular/compiler-cli": "^9.0.6",
"@angular/language-service": "^9.0.6",
"@types/jasmine": "~3.3.1",
"@types/jasminewd2": "~2.0.6",
"@types/node": "^12.11.1",
"codelyzer": "^5.1.2",
"jasmine-core": "~3.3.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.1.3",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.0",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.1",
"tslint": "~5.11.0",
"typescript": "^3.7.5"
}
Любая помощь будет оценена.