Как предоставить два класса в Angular DI

У меня есть два класса адаптеров, которые расширяются из одного и того же класса, примерно так:

NativeDateAdapter расширяет DateAdapter;

MaterialJalaliDateAdapter расширяет DateAdapter;

Я хочу предоставить их оба в своем сервисе , поэтому попробуйте эти способы, но получите ошибки.

        @NgModule({
       providers: [
         {
           provide: DateAdapter,
           useClass: MaterialJalaliDateAdapter,
           multi: true,
           deps: [MAT_DATE_LOCALE],
         },
         { provide: DateAdapter, useClass: NativeDateAdapter, multi: true, deps: [MAT_DATE_LOCALE] 
         }
       ]
    })

myService.ts: (это то, что мне нужно)

       constructor(@Inject(DateAdapter) private dateAdapters: DateAdapter<any>[]){
    if (this.calendarType == 'A') {
        this.dateAdapter = dateAdapters[1];
    } else {
        this.dateAdapter = dateAdapters[0];
    }
 }

ошибка для этого пути:

также попробуйте этот способ, но получите ошибку:

      @NgModule({
  providers: [
    {
      provide: DateAdapter,
      useValue: [NativeDateAdapter, MaterialJalaliDateAdapter],
      deps: [MAT_DATE_LOCALE],
    },
  ]
})

0 ответов

Другие вопросы по тегам