Передача параметров в useFactory () - PullRequest
0 голосов
/ 03 мая 2020

Практикуя метод DI и Factory, я хочу передать некоторые параметры Factory. Итак, я написал что-то вроде этого:

const loggingImplementation: AnalyticsImplementation = {
  recordEvent: (metric: Metric): void => {
    console.log('The metric is:', metric);
    console.log('Sending to', destUrl);
  }
};

export function loggerFactory(http: HttpClient, destUrl: string): AnalyticsService {
  return new AnalyticsService(loggingImplementation);
}

@NgModule({
  imports: [CommonModule, HttpClientModule],
  providers: [
    {provide: 'API_URL', useValue: 'http://nsa.gov'},
    { provide: AnalyticsService, deps: [HttpClient, 'API_URL'], useFactory(http: HttpClient, destUrl: string): loggerFactory}
  ],
  declarations: [ ]
})

export class AnalyticsDemoModule1 {
}

Но Angular выдает мне ошибку, говоря, что точка с запятой отсутствует после loggerFactory, поэтому я думаю, что я не использую правильный синтаксис. Можете ли вы помочь мне сказать, что я делаю не так?

1 Ответ

1 голос
/ 03 мая 2020

Нет необходимости в (http: HttpClient, destUrl: string):

useFactory: loggerFactory

Если вы хотите ввести API_URL, вы можете использовать специальную запись:

{
  provide: AnalyticsService,
  deps: [ HttpClient, new Inject('API_URL') ],
  useFactory: loggerFactory
}

И она должна работать. Все, что вы определите в deps, будет передано заводским параметрам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...