Ionic 2,在iOS上使用Angular 2 Pipe break-"无法找到变量:Intl"

Hun*_*ter 34 ios ionic-framework ionic2 angular

在模板中使用日期,百分比和货币管道时遇到同样的问题 -

例如,我使用的是简单的百分比管道:

{{ .0237| percent:'1.2-2' }}
Run Code Online (Sandbox Code Playgroud)

它在Chrome上运行时有效,但是当我部署到iOS设备时,它会抛出此错误:

"EXCEPTION:ReferenceError:无法找到变量:[{{{{{0237 |百分比:'1.2-2'}}中的Intl ......"

有没有其他人遇到这个问题?任何建议或帮助将不胜感激!谢谢!

cex*_*yat 68

这是因为它依赖于内部化API,目前并非在所有浏览器中都可用(例如,不在iOS浏览器上).

请参阅兼容性表.

这是一个已知问题(beta.1).

您可以尝试将填充物用于Intl.

为此,您可以使用CDN版本,并将其添加到index.html:

<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script>
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用Webpack,则可以使用NPM安装Intl模块:

npm install --save intl
Run Code Online (Sandbox Code Playgroud)

并将这些导入添加到您的应用:

import 'intl';
import 'intl/locale-data/jsonp/en';
Run Code Online (Sandbox Code Playgroud)

  • 我建议通过npm安装,因为如果你有网络问题,那么无法通过互联网和应用程序显示空白屏幕访问polyfill (3认同)
  • 如果您正在使用CLI构建设置,请将两个import语句添加到polyfills.ts (2认同)

Ste*_*evo 11

有一个快速解决方案.加

<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script>
Run Code Online (Sandbox Code Playgroud)

<script src="cordova.js"></script>输入之前到index.html文件.

看到这个github答案https://github.com/angular/angular/issues/3333#issuecomment-203327903