2016-10-10 2 views
1

ich durch ein Buch Tutorial werde Typoskript und AngularJS 2.0 lernen: (Become_a_Ninja_with_Angular2).Angular2 + Typoskript + moment.js => locale sind nicht dazu da alle (nur 'en')

Irgendwann erklärt es, wie man eine eigene Pipe macht und geht durch eine Implementierung von moment.js.

In dem Ordner, in meinem Projekt befindet ich in CLI: npm install moment (Zur Info: Das Buch erzählt auch typings install --save --ambient moment-node zu tun, aber das wirft einen Fehler, auch wenn ich --ambient von --global, auch dieser Fehler nicht passiert, ändern ein Problem zu verwenden moment.js als der Rest des Codes, den ich unten beschrieben, läuft).

Dann als Ergebnis der vorherigen CLI, schafft es unter meinem Projektordner: [my project folder]\node_modules\moment

Dann in [my project folder]\main.html, ich habe einen <script> Tag mit: `

<script> 
    System.config({ 
       defaultJSExtensions: true, 
       map: { 
        ... [plenty of stuff starting with @angular].. 
        '@angular/platform-browser-dynamic':'node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
        'rxjs': 'node_modules/rxjs', 
        'moment':'node_modules/moment/moment' 
       } 
    }); 

System.import('main'); 
</script> 

Mein benutzerdefiniertes Rohr sieht wie folgt aus :

import { PipeTransform, Pipe } from '@angular/core'; 
import * as moment from 'moment'; 
import 'moment/../locale/fr'; 

@Pipe({name: 'fromNow'}) 
export class FromNowPipe implements PipeTransform { 
    transform(value,args){ 
     let mydate = moment(new Date(value)); 


console.log(moment.locales()); 

     return mydate.fromNow(); 

    } 

} 

Wie Sie in meinem benutzerdefinierten Rohr Code zu sehen, die für den Zugriff auf th e locale 'fr', ich musste hinzufügen import 'moment/../locale/fr (what I found by looking at already existing solution on StackOverflow). Wenn dieses Tag nicht implementiert wurde, hatte ich nur Zugriff auf 'en'. Das bedeutet, dass beim Hinzufügen anderer Sprachen import 'moment/../locale/[the locale I want available] hinzugefügt werden muss.

Jeder hat irgendwelche Ideen, wie alle locale aus der lib moment.js mit nur der einzigen import * as moment from 'moment'; Anweisung zu haben?

PS: Und ich hinzugefügt, um [My Projektordner] \ app.module.ts:

import { FromNowPipe } from './custom_pipes/fromnow.pipe'; 
... 
    @NgModule({ 
     ... 
     declarations: [...,FromNowPipe], 
     ... 
    }) 
... 

Und irgendwo in einem meiner Komponente ich habe:

[@Component({ 
    selector: 'ns-mycomponent', 
    template:` 
..    <div>{{ '2016/05/01'|fromNow }}</div>.. 

       ` 
}) 

Antwort

1

ich eine Abhilfe gefunden :

Nach dem, was ich in der Frage schrieb, in [my project folder]\main.html:

System.config({ 
      defaultJSExtensions: true, 
      map: { 
       ... 
      } 
}); 

I substituierte: 'moment':'node_modules/moment/moment' mit 'moment':'node_modules/moment/min/moment-with-locales.min.js'

In meiner Pfeife Datei, die ich einfach weiter: import * as moment from 'moment'; am Anfang der Datei und es funktioniert: alle Sprachen zur Verfügung stehen.

Verwandte Themen