#angularjs #angular #angular-hybrid
#angularjs #angular #angular-hybrid
Вопрос:
Я только начал обновлять проект Angular с 9.1.0 до 10.0.12, это все еще гибридное приложение, в котором обновлено несколько компонентов (из Angular JS), как описано в Angular docs
Однако после обновления до Angular 10 эти обновленные компоненты не будут загружаться и приведут к следующей ошибке
Конструктор класса UpgradeComponent не может быть вызван без ‘new’ (в new MyUpgradedComponentDirective)
Я просмотрел список изменений и не нашел никакой информации об UpgradeComponent.
Ответ №1:
Изменение jit
на true может быть не лучшим решением — это переключит директиву в режим, когда она скомпилирована во время выполнения браузера, вместо того, чтобы использоваться как предварительно скомпилированный JS-код.
Похоже, что проблема, описанная здесь, может быть решена с помощью установки tsconfig.json
output
свойства на ES2015
, если у вас там более старая версия.
Более подробную информацию можно найти здесь:https://github.com/angular/angular-cli/issues/18067
Ответ №2:
После бесконечного поиска без результатов я перешел в режим проб и ошибок.
Я обнаружил, что у jit
есть @Directive
свойство, если установлено значение true
, указанная ошибка исчезнет.
При добавлении jit: true
обновленный код компонента выглядит примерно так
@Directive({
selector: 'my-angular-selector',
jit: true,
})
export class MyDirective extends UpgradeComponent {
constructor(elementRef: ElementRef, injector: Injector) {
super('angularJsDirectiveSelector', elementRef, injector);
}
}