Мы недавно обновили наше приложение angular до последней версии Angular (Angular v9). Все наши зависимости также обновляются, «ng update» говорит, что все наши зависимости «по порядку».
Когда мы собираем приложение с включенным Ivy, процесс компиляции завершается с кучей ошибок, которых у нас никогда не было встречались ранее:
"angularCompilerOptions": {
"enableIvy": true
}
Некоторые ошибки очень странные, говоря о том, что вы не можете связать 'ngClass' или 'ngModel', так как это не известное свойство 'div'. Кажется, что он пропускает некоторые из своих основных модулей.
Например:
src/app/register/register.component.html:34:48 - error NG8002: Can't bind to 'ngClass' since it isn't a known property of 'div'.
<div class="form-group has-feedback" [ngClass]="{ 'has-error': f.submitted && !fname.valid }">
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/app/modals/modal-recommendations/modal-recommendations.component.html:12:25 - error NG8002: Can't bind to 'ngClass' since it isn't a known property of 'div'.
<div class="modal-body" [ngClass]="{'text-center': recommendationNotVisible()}">
12 <div class="modal-body" [ngClass]="{'text-center': recommendationNotVisible()}">
src/app/dashboard/dashboard.component.html:53:17 - error NG8002: Can't bind to 'accountId' since it isn't a known property of 'app-metric-box'.
53 [accountId]="accountId"
Или он не распознает некоторые компоненты, такие как:
src/app/export/export-base/export-base.component.html:2:5 - error NG8001: 'router-outlet' is not a known element:
1. If 'router-outlet' is an Angular component, then verify that it is part of this module.
2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
2 <router-outlet></router-outlet>
Ошибки в основном бывают двух типов:
- Невозможно связать с [some-property], поскольку это не известное свойство [some-element]. Свойства могут быть angular свойствами (ngClass, ngModel) или нашими пользовательскими для наших компонентов.
- [some-component] не является известным элементом (опять же, это происходит как для наших пользовательских компонентов, так и для angular компоненты)
Если мы отключаем «Ivy», все работает без ошибок, код компилируется и работает гладко.
Мы хотим начать использовать Ivy, поэтому мы ищем объяснение об этих ошибках и как их исправить.
Спасибо!