Angular Ошибка компилятора после обновления до версии 9 - PullRequest
0 голосов
/ 10 февраля 2020

После обновления до Angular 9 я получаю странную ошибку компилятора. Я обновил 4 проекта, 3 без проблем, но последний выдает эту ошибку:

ERROR in Error: [class] and [className] bindings cannot be used on the same element simultaneously
    at StylingBuilder.registerClassInput (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:13564:27)
    at StylingBuilder.registerInputBasedOnName (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:13527:36)
    at StylingBuilder.registerBoundInput (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:13503:36)
    at C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:17296:57
    at Array.forEach (<anonymous>)
    at TemplateDefinitionBuilder.visitElement (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:17295:28)
    at Element.visit (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:4268:71)
    at visitAll (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:4435:40)
    at TemplateDefinitionBuilder.buildTemplateFunction (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:16982:13)
    at C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:17558:60
    at C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:16992:81
    at Array.forEach (<anonymous>)
    at TemplateDefinitionBuilder.buildTemplateFunction (C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:16992:37)
    at C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:17558:60
    at C:\Users\kschramm\Documents\arzneimittel-wechsler\node_modules\@angular\compiler\bundles\compiler.umd.js:16992:81
    at Array.forEach (<anonymous>)

Я понятия не имею, что вызывает эту ошибку, кто-нибудь есть идеи?

Ответы [ 3 ]

3 голосов
/ 11 февраля 2020

Я проверил свой код и нашел причину ошибки. Это был элемент html с двумя обычными декораторами классов. Просто проблема с копированием, но Айви, похоже, это не нравится: D

2 голосов
/ 10 февраля 2020

Поиск в вашем проекте для каждого элемента html с [class] AND [className] в нем. В моем случае это был более старый плагин (в node_modules), который еще не был адаптирован к Angular 9. После того, как я удалил [className] (он мне не нужен), он работал нормально. Подсказка заключалась в том, что компиляция остановилась у плагина с ошибкой.

0 голосов
/ 05 мая 2020

Ошибка довольно очевидна, но трудно найти, где именно она была сгенерирована.

В моем случае шаблон, который был нарушен, был что-то вроде:

<div class="classA {{ some_object.propertyB }}"
     [class.classC]="some_object.propertyC">

, и я исправил он преобразует его в:

<div class="classA" [ngClass]="{
     'classX': some_condition,
     'classC': some_object.propertyC}">

По сути, мне пришлось переместить все привязки в одну ngClass.

Ссылка, которая может быть полезной:

...