Sử dụng dịch vụ http mới ở góc 2, tôi muốn làm nhiều hơn với lỗi của tôi hơn là chỉ ném lỗi trong bảng điều khiển. Thật không may, tôi dường như không thể truy cập các thuộc tính đối tượng của tôi từ bên trong hàm gọi lại bắt được.Cách truy cập các thuộc tính đối tượng trong chức năng bắt Angular 2 http rxjs với (điều này)
tôi gọi dịch vụ http:
return this.http.get(this.apiUrl, options)
.map(this.extractData, this)
.catch(this.handleError)
My HandleError callback fn:
handleError (error) {
console.log(this)//undefined!
if(error.status === 401){
this.router.navigate(['/login'])//because `this` is undefined, this does not work
}
...
}
Theo rxjs tài liệu, bắt không hỗ trợ một thisArg
số thứ hai, đó là rất hữu ích trong bản đồ chức năng:
extractData(res) {
console.log(this)//returns the instance of my service class, which is what I want
this.someFunctionInMyService()//works great! In fact, I could call this.router.navigate if I wanted.
return res.json()
}
Vậy làm cách nào để gọi hoặc sử dụng tài sản dịch vụ của tôi từ trong cuộc gọi lại handleError
?
Awesome! Tôi thiếu hiểu biết về bối cảnh chức năng. ... Ngoài ra, tôi đã thử gói trong một chức năng trước đây, nhưng không phải là một chức năng mũi tên, tôi đã quên mục đích thực sự của các chức năng mũi tên. Cảm ơn! – Joao
Cảm ơn! làm việc hoàn hảo. – michali