Как импортировать ионно-угловой BaseInput для работы с компиляцией JIT и AOT? - PullRequest
0 голосов
/ 22 декабря 2019

Я работаю с довольно стандартной настройкой проекта Ionic v3 и пытаюсь расширить BaseInput для пользовательского компонента. Поскольку он не отображается через ionic-angular, я пытаюсь импортировать его как не-UMD,

import { BaseInput } from 'ionic-angular/util/base-input';

или как UMD,

import { BaseInput } from 'ionic-angular/umd/util/base-input';

Первый (неUMD) работает с JIT-компилятором, например, при запуске приложения через ionic serve. Однако при попытке выполнить сборку prod (ionic cordova build <platform> --prod) происходит сбой с внешне не связанными ошибками машинописи («Невозможно определить модуль для класса [...] в [...]»).

В случае импорта из UMD сборки prod (с компилятором AOT) проходят без ошибок, но попытка запустить приложение завершается неудачно с сообщением об ошибке:

Error: Cannot find module "."
  at webpackMissingModule (webpack:///node_modules/ionic-angular/umd/util/base-input.js:13:24 <- test-config/karma-integration-test-shim.js:180279:69)
  at webpack:///node_modules/ionic-angular/umd/util/base-input.js:13:24 <- test-config/karma-integration-test-shim.js:180279:147
  at Object.<anonymous> (webpack:///node_modules/ionic-angular/umd/util/base-input.js:19:1 <- test-config/karma-integration-test-shim.js:180288:3)
  at __webpack_require__ (webpack:///webpack/bootstrap%20e1799a6a30ca82a9bd77:19 <- test-config/karma-integration-test-shim.js:20:30)
  at Object.<anonymous> (test-config/karma-integration-test-shim.js:180256:92)
[...]

Как я могуимпортировать BaseInput способом, соответствующим как JIT, так и компилятору AOT?

Обновление: обходной путь

В качестве обходного пути мой класс теперь просто расширяет IonInput и реализует ControlValueAccessor.

При этом не забудьте установить аксессор значения, если это необходимо, например, поместите это в конструктор:

if (_ngControl) {
  _ngControl.valueAccessor = this;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...