2016-10-10 7 views
1

Я иду через книгу учебник, чтобы узнать машинописи и AngularJS 2.0: (Become_a_Ninja_with_Angular2).Angular2 + машинопись + moment.js => локаль не все там (просто 'ан')

В какой-то момент он объясняет, как сделать свою собственную трубу и проходит через реализацию moment.js.

В папке, где мой проект находится я в CLI: npm install moment (FYI: В книге также рассказывается сделать typings install --save --ambient moment-node, но выдает ошибку, даже если я изменить --ambient по --global, и эта ошибка происходит не быть проблема использования moment.js как остальная часть кода, описанного ниже, выполняется).

Затем, в результате предыдущего CLI, он создает под моей папке проекта: [my project folder]\node_modules\moment

Тогда в [my project folder]\main.html, у меня есть <script> тег: `

<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> 

Мой заказ трубы выглядит следующим образом :

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(); 

    } 

} 

Как вы можете увидеть в моем настраиваемых труб кода, чтобы получить доступ тыс e locale 'fr', мне пришлось добавить import 'moment/../locale/fr (what I found by looking at already existing solution on StackOverflow). Если этот тег не был реализован, я имел доступ только к 'en'. Это означает, что для добавления других языков потребуется добавить import 'moment/../locale/[the locale I want available].

У кого-нибудь есть идеи, как получить все locale из lib moment.js только с одним заявлением import * as moment from 'moment';?

PS: И я добавил [Моя папка проекта] \ app.module.ts:

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

И где-то в одном из моего компонента у меня есть:

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

       ` 
}) 

ответ

1

Я нашел обходной путь :

Основываясь на том, что я написал в этом вопросе, в [my project folder]\main.html:

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

I замещенного: 'moment':'node_modules/moment/moment' с 'moment':'node_modules/moment/min/moment-with-locales.min.js'

В моем файле трубы я просто держал: import * as moment from 'moment'; в начале файла, и она работает: все языки доступны.

Смежные вопросы