Основная идея - начать с нового проекта JHipster (v5.8.2) и интегрировать в него тему Metronic Angular.Я не нашел много документации по этой задаче, но вяло интегрировал различные комплекты css / js, компоненты, однако натолкнулся на проблему с некоторыми из их директив.Таким образом, в основном в toggle.directive.ts после инициации представления он пытается создать новый KTToggle, см.
ngAfterViewInit(): void {
this.toggle = new KTToggle(this.el.nativeElement, this.options);
}
KTToggle определен в scripts.bundle.js что я уже импортировал в vendor.ts .Я также скопировал файл typings.d.ts из metronic в src / main / webapp / app .
Проблема в том, что он не находит KTToggle, при запуске npm запустите webpack: build Я не получаю ошибки, но при попытке доступа к странице я получаю
ERROR ReferenceError: "KTToggle is not defined"
Дополнительно в IntelliJ я получаю следующую ошибку
TS2350: Only a void function can be called with the 'new' keyword
Я пытался объявить KTToggle прямо в директиве
declare var KTToggle: any;
Но это дает мне ту же ReferenceError.Кроме того, в tsconfig.json я пытался указать на файл наборов с помощью typeRoots , types , files все выдало мне либо ту же ошибкуили для типов произошел сбой других частей приложения.
Я не слишком разбираюсь в Angular / Webpack, но подозреваю, что набор текста загружен неправильно, потому что, если я пытаюсь перейтик определению KTToggle в IntelliJ он указывает на файл scripts.bundle.js .
Я приветствую любую помощь, спасибо.
Дополнительная информация:
typings.d.ts
/* SystemJS module definition */
declare var module: NodeModule;
interface NodeModule {
id: string;
}
declare var KTMenu: any;
declare var KTOffcanvas: any;
declare var KTScrolltop: any;
declare var KTHeader: any;
declare var KTToggle: any;
declare var KTUtil: any;
declare var KTPortlet: any;
declare var KTDialog: any;
declare var Chart: any;
scripts.bundle.js
.....
KTToggle=function(t,e){var n=this,i=KTUtil.get(t);KTUtil.get("body");if(i){var o={togglerState:"",targetState:""}
....