2017-02-20 92 views
5

我是Ionic2/Angular2的新手&我一直在环顾四周,发现了几个解决方案,以解决使用intl日期格式解决polyfill问题需要做什么(示例答案这里:Ionic 2, Using Angular 2 Pipe breaks on iOS—"Can't find variable: Intl"Ionic 2 - 如何导入Intl polyfill

但是我不明白,没有教程/堆栈溢出解释帮助我弄清楚,究竟是在哪里,究竟是如何完成这一点。我做了npm install来将intl包添加到我的节点模块中,但所有内容都只是说“然后导入”,但我不知道该怎么做,因为我没有可以将它导入到的polyfill.ts文件,只是build/polyfill.js文件&我试着直接导入到使用intl日期操作的.ts文件中,但那并没有解决问题。

有可能我不理解一些非常基本的东西,这就是为什么没有人明确说明你需要导入它的位置,但有人可以向我解释如何导入或者引用我的资源来解释我不理解。

+1

通常,polyfill.ts在应用程序模块,从而导入导入需要在他的应用程序模块polyfill应该做的伎俩 –

+0

你是最好的!我很愚蠢,没有正确的导入路径..您的评论让我放心,我在正确的轨道上,修复工作。我完成了import'intl';但我需要输入'intl/dist/Intl.complete.js'; 谢谢!如果你想复制/粘贴你写的答案,我会接受它。 –

+0

我很高兴它的工作!这些路径总是有点奇怪...我已经从评论做出了回答! –

回答

10

通常情况下,polyfill.ts在 应用模块 文件导入那会引导你的应用程序通常是这样的main.ts文件,所以进口所需的填充工具在 应用模块 引导文件应该做的伎俩。

下面是一个例子:

main.ts

import './polyfills.ts'; 

import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 
import {enableProdMode} from '@angular/core'; 

import {environment} from './environments/environment'; 
import {AppModule} from './app/app.module'; 

if (environment.production) { 
    enableProdMode(); 
} 

platformBrowserDynamic().bootstrapModule(AppModule); 

polyfill.ts

// All needed polyfills for example web animations 
import 'web-animations-js/web-animations.min'; 
+0

为什么它应该在main.ts中(请注意在最新的离子中有main.ts和main.prod.ts),而不是在app.module.ts中? –

+0

@AlexRyltsov取决于你的环境,在我给main.ts的例子中,它的引导方法是由一个webpack插件根据环境变量(开发或生产)而变化的。如果你有两个单独的文件,你必须在这两个文件中包含polyfills或者在开发和生产中使用的文件。 –