Angular 6.x 在 IE 11 中不起作用 - 错误:参数无效

ben*_*oam 1 internet-explorer polyfills internet-explorer-11 angular angular6

我有一个在 Chrome 中完美运行的 Angular 6.x 应用程序。问题是尝试在 IE 11 中运行它时,出现错误:

错误:无效的参数。在 DefaultDomRenderer2.prototype.setProperty...

在此处输入图片说明

已经在 StackOverflow 中尝试了我在没有帮助的情况下找到的所有答案。我在这里列出主题,所以你们不会尝试将它们作为答案:

感谢您的帮助。

ben*_*oam 5

我发现了问题并修复了它。我写这个答案是为了为其他面临这个问题的人节省时间。

问题是将错误值的变量绑定到HTML 属性(任何 HTML 属性)。

例如

将变量分配给p标记中的dir属性,必须使用dir属性的可能值之一进行定义,它们是:ltr | rtl | auto

在 html 中有这一行: <p [dir]="myDir">Test</p>

myDir = undefinedmyDir = 'bla bla bla'或任何其他不正确的值 -我们会得到一个错误

何时myDir = 'rtl'或任何其他正确值 - 我们不会收到错误。

添加了一个DEMO以在 IE 中运行以查看重现此错误。

作为结论,我认为我们可以说,当绑定到 HTML 属性时,我们必须非常小心地拥有一个有效的属性值,这样我们就不会遇到这个问题。

  • 相同,但使用 `&lt;textarea [rows]="rows"&gt;` 我的组件有一个无效值(rows 为“-1”),但在 Chrome 中,DOM 最终为 `rows="2"`,而在 IE 中则为仍在尝试将其设置为“-1”。由于将其更改为 fn 在 -1 情况下返回 null 以完全抑制该属性也不起作用,因此我最终将绑定更改为使用“[attr.rows]”,它将成功接受“null”并省略属性。 (2认同)