首页 > 解决方案 > 如果项目不是使用 Angular-CLI 创建的,则添加 Polyfill 支持

问题描述

我接管了一个不是我设计的 Angular 7 应用程序。

我有一个网页请求用户的出生日期作为字段之一,在signup.component.html文件中使用以下代码:

<input [(ngModel)]="dateOfBirth" id="DOB" name="dateOfBirth" type="date" max="9999-12-31" />

以上适用于 Windows 10 Chrome 和 Firefox(尚未有机会测试 Edge)。

但是,IE 11在调试器控制台中报告以下错误:

(X) SCRIPT438: 对象没有支持属性或方法“匹配”main-client.js (xxxxxx,yy)

我已将问题隔离到 DOB,因为如果删除了上面的 Angular 双向绑定[(ngModel)],则应用程序不会在 IE 11 中给出错误。

polyfill经过研究,如果没有为 Angular 应用程序启用支持,这似乎是一个常见问题。如果使用 Angular-CLI 创建需要修改的必要文件,大多数解决方案都会描述修复。

但是,应用程序源代码有package.jsonpackage-lock.jsontsconfig.json,但没有以下文件: angular.jsontsconfig.app.jsontsconfig.spec.json\src\polyfill.ts

我的问题是:

如何向此应用程序添加 polyfill 支持?

标签: angular

解决方案


要手动将 polyfills 添加到您的 Angular 项目中,只需将它们添加到index.html文件夹根目录中的应用程序中,例如: src/index.html

但是对于您的问题,您似乎可以这样做以支持 IE 9+

if (!Element.prototype.matches) {
  Element.prototype.matches = Element.prototype.msMatchesSelector ||
                              Element.prototype.webkitMatchesSelector;
}

来自莫兹拉


推荐阅读