Не удается разрешить параметр для службы (?) Только в режиме без 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-режиме.