Я хочу отправить функцию в качестве параметра. Когда я вызываю его в другой функции «this» и других, например «HttpClient», «urlBase» не определено.
Я искал в интернете и обнаружил свойство bind (), но если теперь определено «this», остальные все еще не определены. Поэтому я поместил все нужные мне свойства в функцию bind (), но для меня это выглядит плохо ...
Это моя сервисная функция, которая работает отлично.
deleteEmpBusArea(employeeId: number, busAreaId: number){
let params = {
empId: employeeId,
bsarId: busAreaId
};
return this.http.delete(`${this.envConfig.baseUrl}/employee/delete-emp-bus-area`, {params: stringify(params)}).pipe(share());
}
Это функция, которую я хочу дать ей в качестве параметра другую функцию:
deleteBusinessArea(area: BusinessArea){
this.utilitiesDialogService.deleteRowFromDialog(area, this.employeeService.deleteEmpBusArea.bind(this, this.http, this.envConfig, stringify));
}
, а также предыдущая вызванная реализация функции
deleteRowFromDialog(element: any, funcCalled: Function){
this.openDeleteDialog(element).afterClosed().pipe(
switchMap((isClosed) => {
if (isClosed === false) {
return funcCalled(element.id);
}
return EMPTY;
}),
takeUntil(this.unsubscribed)).subscribe(() => {
});
}
Stringify - это функция в файле .ts с такой подписью:
export function stringify(json: any): any {
///code implementation
}
Я ожидал, предоставив «this» с помощью свойства bind, «this» возьмет все, что есть с ним («this.http», «this.envConfig» и т. Д.), И не запишет их все в .bind ( ) Правильно ли предоставлять их всех в связке?
Кроме того, stringify является функцией экспорта. Я не смог отправить ее в свойстве bind () и выдает ошибку:
A JS error occurred: Converting circular structure to JSON TypeError: Converting circular structure to JSON