JHipster: Angular에서 동적으로 필터 만들기
if (!this.searchShowOverdue) {
this.invoiceService
.filterInvoices({
page: pageToLoad - 1,
size: this.itemsPerPage,
sort: this.sort(),
'type.equals': this.invoiceType,
}).subscribe(
(res: HttpResponse<IInvoice[]>) => this.onFilterSuccess(res.body, res.headers, this.page),
() => this.onError()
);
} else {
this.invoiceService
.filterInvoices({
page: pageToLoad - 1,
size: this.itemsPerPage,
sort: this.sort(),
'type.equals': this.invoiceType,
'status.equals': Status.OVERDUE,
}).subscribe(
(res: HttpResponse<IInvoice[]>) => this.onFilterSuccess(res.body, res.headers, this.page),
() => this.onError()
);
}
필요한 만큼의 조건에 대해 이 작업을 반복합니다. 그래서 나는 그것이 얼마나 많은 코드인지 생각하기 시작했고 그것에 대해 뭔가를 하기로 결정했습니다.
우리 모두 알고 있듯이 서비스는 위의 예에서
req: any
와 같이 size: this.itemsPerPage
를 수신합니다.우리 자신의 조건에 따라 그 물건을 채울 수 있다면 어떨까요? 글쎄, 나는 단지 그것을했다 😉
const req: Record<string, any>[] = [];
req.push({'page': pageToLoad - 1});
req.push({'size': this.itemsPerPage});
req.push({'sort': this.sort()});
req.push({'type.equals': this.invoiceType});
req.push({'active.equals': true});
if (this.searchShowOverdue) {
req.push({'status.equals': 'OVERDUE'});
}
if (this.toDate && this.fromDate) {
req.push({'date.lessOrEqualThan': this.toDate.format(DATE_FORMAT)});
req.push({'date.greaterOrEqualThan': this.fromDate.format(DATE_FORMAT)});
}
const request = {};
(Object.values(req) as Array<any>).forEach(value => {
request[Object.keys(value)[0]] = Object.values(value)[0];
});
this.invoiceService
.filterInvoices(request)
.subscribe(
(res: HttpResponse<IInvoice[]>) => this.onFilterSuccess(res.body, res.headers, this.page),
() => this.onError()
);
보시다시피 코드가 더 깨끗하고 더 많은 필터를 추가하기 쉽습니다.
이것이 최선의 솔루션이 아닐 수도 있다는 것을 알고 있지만 내 프로젝트에서 많은 코드를 정리하는 데 도움이 되었기 때문에 지금은 그렇게 할 것입니다. 더 좋은 해결책이 있다면 알려주세요 😃
Reference
이 문제에 관하여(JHipster: Angular에서 동적으로 필터 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amatosg/jhipster-create-filters-dynamically-in-angular-19ia텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)