2017-02-20 22 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或者在開發和生產中使用的文件。 –