我从服务器返回对象,并且当我试图将对象分配给角度组件对象中的变量时,我收到异常。有人知道我错过了什么吗?将返回的对象分配给客户端角度变量时出错
产品component.ts
import { Component, OnInit } from '@angular/core';
import { Product } from './product';
import { ProductsService } from './products.service';
import { ActivatedRoute, Params } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/map';
@Component({
selector: 'product',
templateUrl: './app/products/product.component.html'
})
export class ProductComponent implements OnInit {
data: Product;
constructor(private productSrv: ProductsService,
private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.map(params => params['id']).subscribe(
id => {
if (id)
this.productSrv.obtainProduct(+id).subscribe(
product => {
console.log(product);
this.data = <Product>product;
},
error => console.log(error));
else
this.data = <Product> {
id: 0,
name: '',
code: ''
};
},
error => console.log(error));
}
}
产品-service.ts
import { Product } from './product';
import { PagingDetails } from './paging-details';
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions, URLSearchParams } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
@Injectable()
export class ProductsService {
constructor(private http: Http) { }
obtainProduct(id: number): Observable<Product> {
return this.http.get('/srv/product/' + id)
.map(this.extractData2)
.catch(this.handleError);
}
private extractData2(res: Response): Product {
let body = res.json();
console.log(body);
return <Product> (body || {});
}
private handleError(error: Response | any) {
// In a real world app, you might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
}
product.ts
export interface Product {
id: number;
name: string;
code: string;
}
这个'co.data'在哪儿?您尚未提供http://stackoverflow.com/help/mcve。没有人可以为你调试应用程序。 – estus