我正在調用服務的數據。我必須傳入一個包含屬性的對象才能檢索數據。從我可以告訴,我正確地傳遞它並沒有在控制檯中收到任何錯誤,但我分配給數據的對象是空的。我在輸出數據時將我的服務和組件包括在內。HTTP PUT請求返回空從角2服務
我使用相同的「有效負載」值從Angular1應用程序調用完全相同的端點並獲取我的數據對象。我確定我錯過了一些簡單的東西。還是習慣角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());
}
}
COMPONENT
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();
}
}
它會的。它是一個異步調用。 console.log被觸發而不用等待其餘的完成。避免這些問題的方法或技巧可能是一件簡單的事情 - 避免在分配時使用單線功能。 – Gary