我正在开发一个有角度的应用程序。
使用
当我执行命令
时ng build
我没有收到任何错误,但是当我尝试生产构建时
ng build --prod
我收到了错误
属性'someProperty'是私有的,只能在“SomeComponent”类中访问。
报告的错误是正确的,我修好了。
问题是为什么dev build没有报告这个?。 这是angular-cli中的缺陷还是我错过了什么?
由于
答案 0 :(得分:17)
ng build --prod compile with Ahead of time compilation
。要通过aot编译,您需要将属性someProperty
传递给public
。 See this issue on angular-cli
仅提醒ng build
和ng build --prod
:
# these are equivalent
ng build --target=production --environment=prod
ng build --prod --env=prod
ng build --prod
# and so are these
ng build --target=development --environment=dev
ng build --dev --e=dev
ng build --dev
ng build
--dev
和--prod
标志的默认选项午餐:
Flag --dev --prod
--aot false true
--environment dev prod
--output-hashing media all
--sourcemaps true false
--extract-css false true
--named-chunks true false
--build-optimizer false true with AOT and Angular 5
希望它有所帮助。
答案 1 :(得分:5)
--prod
标志激活许多优化标志。其中一个是--aot
用于Ahead Of Time编译。您的组件模板在构建期间进行编译,因此TypeScript可以检测代码中的更多问题。你可以在开发模式下编译,但如果你想在构建prod之前看到这个错误,仍然可以激活--aot
标志。
来自the official compiler documentation
提前检测模板错误
AOT编译器在构建步骤中检测并报告模板绑定错误,然后用户才能看到它们。
答案 2 :(得分:0)
这是为了最小化开发模式下的构建时间。 在我的项目中构建--prod需要花费二十倍的时间