在严格模式下不允许 属性 的多个定义 - Angular

Multiple definitions of a property not allowed in strict mode - Angular

我 运行 在我的 Angular (6) IE 项目中加入了这个,这导致应用程序无法加载。它只发生在应用程序的产品构建中,它由 Angular 连接和缩小。 'ng serve' 下的本地开发版本 运行 没有导致问题。此错误出现在 Chrome 开发控制台中:

SCRIPT1046: Multiple definitions of a property not allowed in strict mode
File: main.51c74b0704ecaa189364.js, Line: 1, Column: 1263758

这是它所指的缩小主脚本中的位置:

(6,{"col-6":0,"col-6":1})

我发现我的 ngClass 有几个地方针对不同的评估设置了相同的 class。我有一个通用的库函数 mobile(),我用它来确定我们是在移动设备上还是在小型桌面上,并相应地设置我的 classes(特别是 Bootstrap 列、边距、填充等) .例如:

<div [ngClass]="{'col-12': mobile(), 'col-6': !mobile()}">

有几个地方我对这两种情况使用了相同的 class,如下所示:

<div [ngClass]="{'col-6': mobile(), 'col-6': !mobile()}">                            

我知道 Bootstrap 有 class 类,例如 col-sm-6 和 col-md-6 来启用类似的变体,但这与这里无关。 classes 可以命名为 'foo',如果两种情况都分配了相同的 class,这就是导致问题的原因。一旦我将上面的代码重构为只使用 class,就没问题了。

<div class='col-6'>

至于根本原因,我不知道,但欢迎任何意见。 St运行gely 我曾经 运行 由于这个(重复标识符''col-6'')而导致编译器错误,这破坏了构建。但是这段代码中没有编译器错误,它构建和部署干净,只影响 IE。我找到它的唯一方法是在错误附近寻找一些未缩小的 HTML 文本,以了解从哪里开始寻找。