Angular 5 Breaking change - manually import locale

后端 未结 3 774
误落风尘
误落风尘 2020-12-08 04:29

Changelog says:

By default Angular now only contains locale data for the language en-US, if you set the value of LOCALE_ID to another locale, you wi

相关标签:
3条回答
  • 2020-12-08 05:00

    Angular pipes can help you with internationalization: the DatePipe, CurrencyPipe, DecimalPipe and PercentPipe use locale data to format data based on the LOCALE_ID.

    By default, Angular only contains locale data for en-US. If you set the value of LOCALE_ID to another locale, you must import locale data for that new locale. The CLI imports the locale data for you when you use the parameter --locale with ng serve and ng build.

    If you want to import locale data for other languages, you can do it manually:

    src/app/app.module.ts
    content_copy
    import { registerLocaleData } from '@angular/common';
    import localeFr from '@angular/common/locales/fr';
    
    registerLocaleData(localeFr);
    

    The files in @angular/common/locales contain most of the locale data that you need, but some advanced formatting options might only be available in the extra dataset that you can import from @angular/common/locales/extra. An error message informs you when this is the case.

    src/app/app.module.ts
    content_copy
    import { registerLocaleData } from '@angular/common';
    import localeFrCa from '@angular/common/locales/fr-CA';
    import localeFrCaExtra from '@angular/common/locales/extra/fr-CA';
    
    registerLocaleData(localeFrCa, localeFrCaExtra);
    

    See the table about old and new locale too

    0 讨论(0)
  • 2020-12-08 05:08

    This is really hard to find in the current version :(. Here is what i found out:

    The different locales are in the package @angular/common/locales/. In your case this is:

    import localeDECH from '@angular/common/locales/de-CH';
    

    Now you need to register this locale definitions in your project. There is a function called registerLocaleData that is located in: @angular/common.

    So your code in your app.module.ts should look like this:

    import {LOCALE_ID} from '@angular/core';
    import { registerLocaleData } from '@angular/common';
    import localeDECH from '@angular/common/locales/de-CH';
    
    registerLocaleData(localeDECH);
    
    @NgModule({
    ...
    providers: [
       { provide: LOCALE_ID, useValue: 'de-ch' },
    ]
    ...
    })
    ....
    
    0 讨论(0)
  • 2020-12-08 05:12

    For

    { provide: LOCALE_ID, useValue: 'pt-BR' }
    

    Use:

    import { registerLocaleData } from '@angular/common';
    import localePt from '@angular/common/locales/pt';
    registerLocaleData(localePt);
    
    0 讨论(0)
提交回复
热议问题