У меня есть фильтр с флажками, где после проверки добавлен параметр к URL-адресу
https://localhost:8080/api/records?page=0&locationIds=1,2
Но хочу быть таким
https://localhost:8080/api/records?page=0&locationIds=1&locationIds=2
Как я понял, это потому, что я передать параметр Array to URL, и моя основная мысль - переписать этот forEach
не для 'key
', а для 'httpParams[key]
' в файле candidate.service.ts
(не уверен), но не знаю, как это сделать право. Вот мой код:
filter.service.ts. (В этом сервисе фильтр возвращается как массив)
filterByValues(filterType: string, value): FilterParams {
if (!this.filterParams[filterType]) {
this.filterParams[filterType] = [value];
} else if (this.isValueInParams(this.filterParams[filterType], value)) {
this.filterParams[filterType] = this.removeValueFromParams(this.filterParams[filterType], value);
} else {
this.filterParams[filterType].push(value); //return [1, 2]
}
return this.filterParams;
}
isValueInParams(params, value) {
return params.some(item => value === item);
}
Я использую этот сервис в другом файле, когда я устанавливаю некоторые флажки, этот идентификатор добавляется в массив
кандидата-filter.ts
filterByLocation(location: Location) {
const filtersToEmit = this.filterService.filterByValues(CandidateFilter.LOCATION, location.id);
this.candidatesHttpParams.emit(filtersToEmit);
}
Вот где я добавляю url:
кандидата.service.ts
get(page: number, httpParams: FilterParams): Observable<Candidate[]> {
let params = new HttpParams().set('page', page.toString());
//My main thought is to rewrite this forEach not for 'key', but for 'httpParams[key]'. Not sure
Object.keys(httpParams).forEach(key =>
params = params.append(key, httpParams[key])); //key = locationIds, httpParams[key] = [1,2]
return this.http.get<Candidate[]>(this.url, { params });
}
И где собственно получить Кандидатов
import-page. ts
private getCandidates(page: number) {
this.candidateViewService.get(page, this.params)
//this.params = {key: Array(2)} // [1, 2]
.subscribe(
(candidates: CandidateView[]) => this.candidates = candidates,
error => this.logger.error(error.message));
console.log('this Params',this.params)
}
Надеюсь, мой вопрос ясен. Буду очень признателен за любую помощь!