我是这个打字世界和Angular2的菜鸟,所以这个问题可能会引起有趣的反应。
在我的应用程序中,我需要从WS REST检索数据,数据以Json格式提供。
data: Object
outCurpacatens: [1]
0: Object
agenda: 877
codestado: 1
correlativo: 1
estado: "RESERVADO"
idreserva: 18142568
idservicio: 2
idsucursal: 2
materno: "MAT6398674"
nombre: "FELIPE ALEJANDRO"
obs: null
mensaje: null我的界面看起来是:
export interface Agenda {
agenda: number;
codestado: number;
correlativo: number;
estado: String;
idreserva: number;
idservicio: number;
idsucursal: number;
materno: String;
nombre: String;
obs: String;
}agenda.components.ts
export class AgendaComponent implements OnInit {
public localState: any;
public es: any;
public res: any;
public jsonData: any;
constructor(public route: ActivatedRoute, private auth: Auth, private agendService: AgendaService) {
}
public ngOnInit() {
}
testPatch(){
this.res = this.agendService.getAgendaByDate('12')
.subscribe(data => {
this.jsonData = data;
}
);
}}
agendaService.ts
@Injectable()
export class AgendaService {
private baseUrl = 'https://myweb';
private serviceUrl = '/agenda/getmethod';
private headers: Headers;
constructor(private http:Http, private authService: Auth){
}
private getOptions(): RequestOptions {
let headers: Headers = new Headers();
let token = localStorage.getItem('id_token');
headers.append('content-type', 'application/json; charset=utf-8');
headers.append('Authorization', 'Bearer '+ token);
let opts = new RequestOptions({headers: headers});
opts.headers = headers;
return opts;
}
getAgendaByDate(fecha:string): Observable<Agenda> {
/** input parameters setted with cons until resolve issue **/
return this.http.get(`${this.baseUrl}${this.serviceUrl}?id=877&fecha=23082017`)
.map((res: Response) => {
res.json();
}, this.getOptions());
}
}在编译过程中,我得到了以下错误:
议程/议程.组件. on (52,59):属性'outCurpacatens‘在’Agenda‘类型中不存在.
我知道我错过了什么,但我不知道是什么。
编辑更新:
现在我说:
agendaService.ts
getAgendaByDate() {
return this.http.get(`${this.baseUrl}${this.serviceUrl}?id=877&fecha=23082017`)
.map((res: Response) => {return res.json().data.outCurpacatens[0]}).catch(this.handleError);
}
handleError(error) {
console.error(error);
console.log("Error: "+error);
return Observable.throw(error.json().error || 'Server error');
}我在控制台上看到了这个:
控制台
Object { _body: error, status: 0, ok: false, statusText: "", headers: Object, type: 3, url: null } main.bundle.js:161:9
Error: Response with status: 0 for URL: null 致以问候。
发布于 2017-04-24 20:44:11
您在映射中缺少了一个return,应该如下所示:
.map((res: Response) => { return res.json() }一旦完成,您可能希望在响应中提取对应于Agenda的数组中的对象。这意味着数组outCurpacatens中的第一个对象(也是唯一的)对象,因此如何获取该对象的方法如下:
.map((res: Response) => { return res.json().data.outCurpacatens[0]})另外,由于您有一个接口,所以使用它并将变量声明为类型。我假设这将是jsonData,所以应该声明它:
jsonData: Agenda = <Agenda>{};一旦完成,您可能需要使用安全导航操作符来保护空值,如下所示:
{{jsonData?.myProperty}}或者将模板包装在*ngIf="jsonData"中。
希望这会有帮助!)
更新:确保您正在从某个地方调用testPatch。这里有一个
其中testPatch在ngOnInit中被调用。如果您正在正确地接收数据,则代码应该可以工作。
https://stackoverflow.com/questions/43594948
复制相似问题