Как запровайдить два раза объект?

Имеется токен:

export const SEARCH_PARAMETERS = new InjectionToken<SearchParameters>('SEARCH_PARAMETERS');


Он используеться в:

@Injectable()
export class SearchConfig {
    private layers: number[];
    private types: number[];
    private searchType: number;
    private _searchText: string;

    constructor(@Inject(SEARCH_PARAMETERS) config: SearchParameters) {}


Я запровайдил его в компоненте:

providers: [
        SearchConfig,
        SearchByAddressParcel,
        { provide: REON_CLOUD_SERVICE, useExisting: ReonCloudEsService },
        { provide: SEARCH_PARAMETERS, useValue: { layers: [37], types: [4, 5, 6], helpSearch: false, searchText: '', searchType: 2 } },
        { provide: SEARCH_CONFIG, useClass: SearchConfig },
    ],


Проблема в том, что в добавляется еще один сервис SearchByAddressNum, для которого нужно запровайдить свой `SEARCH_PARAMETERS`.

providers: [
        SearchConfig,
        SearchByAddressParcel,
        SearchByAddressNum <!-----------,
        { provide: REON_CLOUD_SERVICE, useExisting: ReonCloudEsService },
        { provide: SEARCH_PARAMETERS, useValue: { layers: [37], types: [4, 5, 6], helpSearch: false, searchText: '', searchType: 2 },
      
         <!-- Данные для второго сервиса SearchByAddressNum -->
            { provide: SEARCH_PARAMETERS, useValue: { layers: [1], types: [2], helpSearch: false, searchText: '', searchType: 2 }
       
 },
        { provide: SEARCH_CONFIG, useClass: SearchConfig },
    ],


Как правильно это сделать? Для этого есть multi параметр, если его использовать так:

{
            provide: SEARCH_PARAMETERS,
            useValue: { layers: [37], types: [4, 5, 6], helpSearch: false, searchText: '', searchType: 2 },
            multi: true,
        },
        {
            provide: SEARCH_PARAMETERS,
            useValue: { layers: [37], types: [2, 3], helpSearch: false, searchText: '', searchType: 2 },
            multi: true,
        },


То как потом сказать к какому сервису первый провайбер а какой ко второму?

Как-то не очень надежно потом использовать, если включить multi:

constructor(@Inject(SEARCH_CONFIG) private searchConfig: SearchConfig[]) {
    this.config = searchConfig[1];
}
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 окт. 2020, в 03:15
100000 руб./за проект
26 окт. 2020, в 02:20
25000 руб./за проект
26 окт. 2020, в 01:56
3500 руб./за проект