Не удается разрешить параметр для службы (?) Только в режиме без AOT

Я видел много случаев, когда компиляция AoT не удалась по той или иной причине или вызвала странную ошибку во время выполнения. У меня есть обратная проблема: мое приложение не в режиме AoT с ошибкой:

Не удается разрешить все параметры для ConfirmRemoveService (?)

Это происходит независимо от того, нацелен ли я на разработку или производство, и использую ли я dev или prod среда. Например, чистая сборка dev завершается успешно, пока я также включаю AoT явно:

ng serve -dev --aot

? в сообщении об ошибке выше относится к типу MatDialogиз библиотеки Angular Material2. (Это ConfirmRemoveService это сервис, используемый компонентами для создания модального диалога.)

Эта проблема может или не может быть связана с обновлением до версии бета 11 этой библиотеки. Это может или не быть связано с моим изменением от одного импорта MaterialModule непосредственно из библиотеки, так как MaterialModule был удален в мой собственный модуль, который импортирует отдельные модули Angular Material2, такие как MatDialogModule; Затем я импортирую этот модуль, где это необходимо. Однако ни одна из этих вещей не мешает приложению работать в режиме AoT; ошибка проявляется только в не AoT-режиме.

Кто-нибудь знает сценарий, в котором такая проблема может возникнуть только в сценарии без AoT, и почему?

1 ответ

Эта проблема оказалась из-за пропущенной строки в tsconfig.json:

"emitDecoratorMetadata": true

Я думаю, что я удалил это в какой-то момент в состоянии домашнего хозяйства, думая, что это было необходимо только при компиляции Angular-friendly библиотек.

Мое подозрение, когда работает под AoT, ngc используется вместо tsc, а также ngc обеспечивает эту настройку по умолчанию, таким образом учитывая ошибку, проявляющуюся только в не AoT-режиме.

Другие вопросы по тегам