HTTP PUT 请求 Returns 清空来自 Angular 2 服务
HTTP PUT Request Returns Empty From Angular 2 Service
我正在从服务调用数据。我必须传入一个具有属性的对象来检索数据。据我所知,我正确地传递了它并且没有在控制台中收到任何错误,但是我分配给数据的对象是空的。我在输出数据的地方包含了我的服务和组件。
我从具有相同 "payload" 值的 Angular1 应用程序调用完全相同的端点,并返回我的数据对象。我确定我错过了一些简单的东西。还在习惯 Angular 2.
服务
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
@Injectable ()
export class DataService {
private qrDataUrl = 'http://my.data.url/endpoint';
private payload = {
DeliveryTypeId: 0,
PickupLocationid: 0,
PaymentTypeId: 0,
Items: ['XXXX'],
ApplicationToken:'123MYTOKEN456',
DateOfBirth: "1961-01-01T00:00:00.000Z"
};
constructor(private http: Http){ }
getQr():Observable<any>{
return this.http.put(this.qrDataUrl, this.payload)
.map((res:Response) => res.json());
}
}
组件
import { Component, OnInit } from '@angular/core';
import { DataService } from '../shared/dataService';
@Component({
selector: 'my-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
providers: [DataService]
})
export class HomeComponent implements OnInit {
qrData = { };
constructor(private dataService: DataService) {
// Do stuff
}
getData(){
this.dataService.getQr().subscribe(data => this.qrData = data);
console.log(this.qrData); //This logs an empty object
}
ngOnInit() {
console.log('Hello Home');
this.getData();
}
}
异步操作不适用于同步方式。您必须等到 ajax 完成。服务调用解决后,您只能在 getQr
函数的订阅中看到数据。
getData(){
this.dataService.getQr().subscribe(data => {
this.qrData = data;
console.log(this.qrData); //This logs an empty object
});
}
我正在从服务调用数据。我必须传入一个具有属性的对象来检索数据。据我所知,我正确地传递了它并且没有在控制台中收到任何错误,但是我分配给数据的对象是空的。我在输出数据的地方包含了我的服务和组件。
我从具有相同 "payload" 值的 Angular1 应用程序调用完全相同的端点,并返回我的数据对象。我确定我错过了一些简单的东西。还在习惯 Angular 2.
服务
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
@Injectable ()
export class DataService {
private qrDataUrl = 'http://my.data.url/endpoint';
private payload = {
DeliveryTypeId: 0,
PickupLocationid: 0,
PaymentTypeId: 0,
Items: ['XXXX'],
ApplicationToken:'123MYTOKEN456',
DateOfBirth: "1961-01-01T00:00:00.000Z"
};
constructor(private http: Http){ }
getQr():Observable<any>{
return this.http.put(this.qrDataUrl, this.payload)
.map((res:Response) => res.json());
}
}
组件
import { Component, OnInit } from '@angular/core';
import { DataService } from '../shared/dataService';
@Component({
selector: 'my-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
providers: [DataService]
})
export class HomeComponent implements OnInit {
qrData = { };
constructor(private dataService: DataService) {
// Do stuff
}
getData(){
this.dataService.getQr().subscribe(data => this.qrData = data);
console.log(this.qrData); //This logs an empty object
}
ngOnInit() {
console.log('Hello Home');
this.getData();
}
}
异步操作不适用于同步方式。您必须等到 ajax 完成。服务调用解决后,您只能在 getQr
函数的订阅中看到数据。
getData(){
this.dataService.getQr().subscribe(data => {
this.qrData = data;
console.log(this.qrData); //This logs an empty object
});
}