66 isPlatformBrowser ,
77 FormatWidth
88} from '@angular/common' ;
9- import { DestroyRef , Inject , Injectable , InjectionToken , PLATFORM_ID , inject } from '@angular/core' ;
9+ import { DestroyRef , Inject , Injectable , InjectionToken , PLATFORM_ID , inject , ɵR3Injector as R3Injector } from '@angular/core' ;
1010import { mergeWith } from 'lodash-es' ;
1111import { NEVER , Observable , Subject } from 'rxjs' ;
1212import { setImmediate } from './setImmediate' ;
@@ -596,9 +596,10 @@ export function onResourceChangeHandle(destroyObj: Subject<any> | DestroyRef, ca
596596 const removeHandler = ( ) => {
597597 getI18nManager ( ) . removeEventListener ( "onResourceChange" , onResourceChangeHandler ) ;
598598 }
599- if ( destroyObj instanceof DestroyRef ) {
599+ if ( destroyObj instanceof DestroyRef || destroyObj instanceof R3Injector ) {
600+ // R3Injector is for tests only
600601 destroyObj . onDestroy ( ( ) => removeHandler ( ) ) ;
601- } else {
602+ } else if ( destroyObj ) {
602603 destroyObj . subscribe ( {
603604 complete : ( ) => removeHandler ( )
604605 } ) ;
@@ -666,11 +667,11 @@ export function formatDate(value: Date | string | number | null | undefined, for
666667 if ( format === 'short' || format === 'medium' || format === 'long' || format === 'full' ) {
667668 dateStyle = format ;
668669 timeStyle = format ;
669- } else if ( format . includes ( 'Date' ) ) {
670+ } else if ( format ? .includes ( 'Date' ) ) {
670671 dateStyle = format . replace ( 'Date' , '' ) ;
671- } else if ( format . includes ( 'Time' ) ) {
672+ } else if ( format ? .includes ( 'Time' ) ) {
672673 timeStyle = format . replace ( 'Time' , '' ) ;
673- } else {
674+ } else if ( format ) {
674675 return getI18nManager ( ) . formatDateCustomFormat ( value , locale , format , timezone ) ;
675676 }
676677 const options : Intl . DateTimeFormatOptions = {
@@ -681,18 +682,18 @@ export function formatDate(value: Date | string | number | null | undefined, for
681682 return getI18nManager ( ) . formatDateTime ( value , locale , options ) ;
682683}
683684
684- function parseDigitsInfo ( value : string ) {
685+ function parseDigitsInfo ( value ? : string ) {
685686 let minIntegerDigits = undefined , minFractionDigits = undefined , maxFractionDigits = undefined ;
686687 if ( value ) {
687688 const parts = value . split ( "-" ) ;
688689 const innerParts = parts [ 0 ] . split ( "." ) ;
689- if ( innerParts [ 0 ] !== "1" ) {
690+ if ( innerParts . length > 0 ) {
690691 minIntegerDigits = parseInt ( innerParts [ 0 ] ) ;
691692 }
692- if ( innerParts . length == 2 && innerParts [ 1 ] !== "0" ) {
693+ if ( innerParts . length == 2 ) {
693694 minFractionDigits = parseInt ( innerParts [ 1 ] ) ;
694695 }
695- if ( parts . length == 2 && parts [ 1 ] !== "3" ) {
696+ if ( parts . length == 2 ) {
696697 maxFractionDigits = parseInt ( parts [ 1 ] ) ;
697698 }
698699 }
@@ -758,6 +759,7 @@ export function getCurrencySymbol(currencyCode: string, locale?: string, curren
758759
759760export function getLocaleFirstDayOfWeek ( locale ?: string ) {
760761 try {
762+ // Angular returns 0 for Sunday...
761763 return ngGetLocaleFirstDayOfWeek ( locale ) ;
762764 } catch { }
763765 return getI18nManager ( ) . getFirstDayOfWeek ( locale ) ;
0 commit comments