我有这样的一段代码Angular2/4 http.get嵌套访问“这个”
let headers = new Headers({ 'Authorization': `${this.user.Token}` });
let options = new RequestOptions({ headers: headers });
this.http.get(environment.apiRoot + 'Customers/Customer/Search/' + term + '/' + value, options)
.map((response) => {
var Data = response.json().Data;
return Data;
}).subscribe(Data => {
this.data.customer.emailAddress = Data.EmailAddress;
this.data.customer.phoneNumber = Data.PhoneNumber;
this.data.customer.firstName = Data.FirstName;
this.data.customer.lastName = Data.LastName;
this.data.customer.streetAddress = Data.StreetAddress;
this.data.customer.city = Data.City;
this.data.customer.state = Data.State;
this.data.customer.zipCode = Data.ZipCode;
this.data.customer.idNumber = Data.IDNumber;
this.data.customer.ID = Data.ID;
this.data.customer.comment = Data.Comment;
// //Check if customer has exsiting orders
this.http.request(environment.apiRoot + 'Orders/Order/Customer/' + Data.ID, options)
.subscribe(odResponse => {
var Data = odResponse.json().Data;
this.data.orders = Data;
this.existingOrders = Data.length > 0;
}, error => {
this.alertService.error('Encountered an error while trying to get customer order data');
});
}, error => {
this.alertService.error('Encountered an error while trying to get customer data');
});
我遇到的问题是,当第一个“GET”完成了“this.data.customer “即使在调试器中,”this“显示为订阅而不是我的组件,那么当第二个”GET“执行”this“时,订阅并且说”this.data.order“是未定义的,所以是“this.data”
所以我想问题是我如何得到“this”在我的订阅是组件而不是订阅。
尝试this.data ['orders'] = Data。 ''this''在这里总是指向你正在使用的组件''''' – CruelEngine
@krzosik试过了,它根本没有任何帮助! – Ksliman
如果你想连锁'Observable's(根据另一个'http.get'的结果做'http.get'),最好在'subscribe'里面使用'switchMap'而不是'subscribe'里面的 –