LOCALE_ID провайдера с useFactory возвращает ноль - PullRequest
0 голосов
/ 02 марта 2020

После обновления до angular 9 мой провайдер возвращает ноль.

@NgModule({
    providers: [
        [...],
        {
          provide: LOCALE_ID,
          deps: [TenantService],      // some service handling global settings
          useFactory: (tenantService) => tenantService.currentTenantValue.language // returns locale string
        }
    ]
})

Мой сервис:

public currentTenant: Observable<Tenant>;

constructor() {
    this.currentTenantSubject = new BehaviorSubject<Tenant>(null);
    this.currentTenant = this.currentTenantSubject.asObservable();
}

public get currentTenantValue(): Tenant {
    return this.currentTenantSubject.value;
}

Я считаю, что это что-то с наблюдаемым, и провайдер принимает первое состояние переменной до получения значения языка, которое приходит через httpClient.get

1 Ответ

0 голосов
/ 03 марта 2020

Я установил его по умолчанию в app.module

{ provide: LOCALE_ID, useValue: 'en-US' }

И в своем общем.модуле я снова определил его с языком, исходящим с сервера

export function tenantServiceFactory(tenantService: TenantService){
  return tenantService.currentTenantValue.language;
}

    {
      provide: LOCALE_ID,
      deps: [TenantService],      //some service handling global settings
      useFactory: tenantServiceFactory  //returns locale string
    },
...