我正在使用Angular 5和Angular CLI 1.6.8。在我的一个模板中,我有以下标记与ng serve
完全正常,但在ng build
失败:
<div [ngSwitch]="amazonReportResultType">
<div *ngSwitchCase="'AmazonReportEarningsByProductResponse'">
<app-amazon-earnings-by-product-view [salesReport]="amazonReportResult"></app-amazon-earnings-by-product-view>
</div>
<div *ngSwitchCase="'AmazonReportEarningsByPlatformResponse'">
<app-amazon-earnings-by-platform-view [salesReport]="amazonReportResult"></app-amazon-earnings-by-platform-view>
</div>
</div>
我的应用程序的其余部分在构建后似乎工作正常。我的构建命令是这样的:
ng build --prod --env=prod --build-optimizer --sourcemaps
当我检查DOM时,在我应该看到开关输出的地方,我看到一个空的注释。为什么会发生这种情况并且有解决方法?
感谢。
答案 0 :(得分:0)
好的,我发现了问题,它与ngSwitch无关。问题是,我通过查看amazonReportResultType
获得了amazonReportResult.constructor.name
的价值,并且该技术与angular cli使用的uglifyJS插件不能很好地配合使用。我通过添加一种方法来解决此问题,该方法使用if (amazonReportResult instanceof ...)
语句检查报告的类型,并在每个if
子句中返回一个字符串。我知道可以通过运行ng eject
并配置uglify插件来解决此问题,但是我不想走这条路。