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

时间:2018-07-24 19:05:51

标签: angular internet-explorer strict

我在IE的Angular(6)项目中遇到了此问题,导致该应用程序无法加载。它仅发生在应用程序的产品构建中,该构建由Angular连接并缩小。在“ ng serve”下运行的本地dev版本不会导致此问题。此错误是在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})

1 个答案:

答案 0 :(得分:0)

我发现我的ngClass在几个地方为不同的评估设置相同的类。我有一个通用的库函数mobile(),用于确定我们是在移动设备还是小型桌面上,并相应地设置类(尤其是Bootstrap列,边距,填充等)。例如:

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

在某些情况下,我在某些地方都使用了相同的类,如下所示:

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

我意识到Bootstrap具有诸如col-sm-6和col-md-6之类的类来启用类似的变体,但这与这里无关。如果两个案例都被分配了相同的类,则这些类可以命名为“ foo”,这就是导致问题的原因。一旦将上面的内容重构为仅使用一个类,就很好了。

<div class='col-6'>

就根本原因而言,我不知道但欢迎任何投入。奇怪的是,有一次我因(重复的标识符“ col-6” )破坏了构建而遇到了编译器错误。但是此代码中没有编译器错误,它可以干净地构建和部署,并且仅影响IE。我发现它的唯一方法是在错误附近寻找一些未缩小的HTML文本,以了解从何处开始寻找。