2017-09-15 33 views
5

我想用WebPack在Angular-Cli中使用Syncfusion EJ2的國際化特性,這是有問題的,因爲所有文檔都使用SystemJs。Syncfusion Ej2與WebPack的國際化

特別是我想使用此示例 http://plnkr.co/edit/4uA2rb0Q2FrLLK6V4sne

import { L10n, loadCldr, setCulture, setCurrencyCode } from '@syncfusion/ej2-base'; 
import * as currencies from './currencies.json'; 
import * as cagregorian from './ca-gregorian.json'; 
import * as numbers from './numbers.json'; 
import * as timeZoneNames from './timeZoneNames.json'; 
import * as numberingSystems from './numberingSystems.json'; 
import { Component, OnInit } from '@angular/core'; 
import { data } from './datasource'; 

loadCldr(currencies, cagregorian, numbers, timeZoneNames, numberingSystems); 

setCulture('de-DE'); 
setCurrencyCode('EUR'); 

我試過,但不能使它工作,我卡在此錯誤: 找不到模塊」 ./numberingSystems。 json'

我應該對樣品做些什麼改變?

回答

8

爲了導入打字稿中的json文件,我們需要在通配符卡模塊聲明(https://www.typescriptlang.org/docs/handbook/modules.html#wildcard-module-declarations)中包含json類型。在typings.d.ts文件中使用下面的聲明代碼來解決編譯問題。

declare module "*.json" { 
    const value: any; 
    export default value; 
} 

注意:您還可以通過安裝NPM包CLDR數據使用CLDR JSON文件。該軟件包包含所有文化json文件。

+0

現在按預期工作,謝謝。我安裝了clrd-data包,我正在以這種方式導入文件 import * as'../../node_modules/cldr-data/main/es-AR/numbers.json'中的數字; 有一種「更好」的方式? –

+0

JSON文件也可以使用require來導入,如下面的代碼片段所述。 loadCldr(require('../../ node_modules/cldr-data/main/de/numbers.json')); 要在anguar-cli應用程序中使用require,我們需要在typings.d.ts文件中聲明require,如下代碼片段 declare var require:any; –