【发布时间】:2017-07-24 11:34:37
【问题描述】:
我已经使用http POST请求将数据发送到后端并保存数据,还从后端返回了一个名为receiptNo的元素。
现在我在服务中有receiptNo,但我无法将其发送到调用服务的组件(无法获取从服务发送到组件的异步数据的挂起)
在组件中的订阅处出现以下错误:
“布尔”类型不存在“订阅”属性。
我的组件:
import { Component, NgZone,OnInit } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { Printer, PrintOptions, Toast } from 'ionic-native';
import {LoanService} from '../../app/services/loan.service';
import {CollectionService} from '../../app/services//CollectionService';
import { CollectpaymentsPage } from '../collection/collection.component';
import { Collection} from '../../../../common/classes/Collection';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
@Component({
selector: 'page-receipt',
templateUrl: 'receipt.html'
})
export class ReceiptPage {
base64Image: any;
public loan: Dictionary;
public mobile: any;
// public form: any;
public amount: any;
public collection: Collection;
public data;
public res;
constructor(public navCtrl: NavController,public collectionService: CollectionService, public zone: NgZone, public params: NavParams) {
this.loan = params.get('loan');
this.mobile= params.get(this.mobile);
// this.form= params.get('form');
this.amount= params.get('amount');
this.collection = params.get('collectionData');
}
ngOnInit() {
console.log("this is receipt collectionss page")
console.log(this.collection)
console.log("from receipt ts")
// XXX check for return value and errors
// this.collectionService.saveCollection( this.collection);
this.collectionService.saveCollection( this.collection)
.subscribe(result => this.data = result);
}
}
interface Dictionary {
[ index: string ]: string
}
我的服务(collectionService):
public saveCollection( collection: Collection) {
console.log("Collections Form data ")
let queryParameters = new URLSearchParams();
let headerParams = new Headers({ 'Content-Type': 'application/json' });
var userToken = JSON.parse(localStorage.getItem('currentUser'));
queryParameters.set('token', userToken.token );
let requestOptions: RequestOptionsArgs = {
method: 'POST',
headers: headerParams,
search: queryParameters
};
console.log( collection)
var result = collection.validate()
console.log( result)
if( ! result["isValid"] ){
console.log( result["message"])
return false;
}
const url = this.basePath + '/api/v1/collection';
let headers = new Headers({ 'Content-Type': 'application/json' });
this.http.post(url, collection , requestOptions)
.subscribe((response: Response) => {
console.log(response);
let receiptNo = response.json().receiptNo;
console.log("this is return valuevalue")
console.log(receiptNo);
if(receiptNo){
console.log("tihis is return value");
console.log(receiptNo)
return response.json();
}
else{
console.log("failedfaileffailefailed")
return undefined;
}
});
}
【问题讨论】:
-
使用组件代码更新您的帖子。单独的 oninit 方法不足以调试您的问题。
标签: angular asynchronous typescript ionic-framework http-post