gpt4 book ai didi

http - Angular2 Http未定义错误

转载 作者:可可西里 更新时间:2023-11-01 16:26:34 26 4
gpt4 key购买 nike

我正在尝试使用 Angular2(angular 2.0.0-beta.0 和 typescript 1.7.5)中的 Http 模块发出获取请求,但我遇到了某种同步问题。我将所有内容都放在一个 .ts 文件中,以便于交流。

在 typescript 中一切都可以正常编译,但 Chrome 在控制台中显示以下错误:

EXCEPTION: TypeError: Cannot read property '_id' of undefined in [Id: {{contact._id}} Name: {{contact.name}} in Test@1:13]
ORIGINAL EXCEPTION: TypeError: Cannot read property '_id' of undefined
ORIGINAL STACKTRACE:
TypeError: Cannot read property '_id' of undefined
...
...
Object {_id: "5695e53d98ff94671ae22d55", name: "Piet Pannenkoek", email: "piet@gmail.com", number: "435345"}

test1.ts:

import {bootstrap} from 'angular2/platform/browser';
import {Component} from 'angular2/core';
import {Http, Response, HTTP_PROVIDERS} from 'angular2/http';
import 'rxjs/Rx';

@Component({
selector: 'my-app',
template: `
<div>Id: {{contact._id}} Name: {{contact.name}}</div>
`,
providers: [HTTP_PROVIDERS]
})

export class Test {

public contact: Contact;

constructor(private http: Http) {}

ngAfterViewInit() {
this.http.get('/api/contactlist/5695e53d98ff94671ae22d55')
.map((res: Response) => res.json())
.subscribe(res => {
console.log(res);
this.contact = res;
});
}
}

export class Contact {
constructor (public _id: string, public name: string, public email: string, public number: string) {};
}

bootstrap(Test);

http://localhost:3000/api/contactlist/5695e53d98ff94671ae22d55

{"_id":"5695e53d98ff94671ae22d55","name":"Piet Pannenkoek","email":"piet@gmail.com","number":"435345"}

奇怪的是另一个(略有不同的)版本 test2.ts 没有给出任何错误:

import {bootstrap} from 'angular2/platform/browser';
import {Component} from 'angular2/core';
import {Http, Response, HTTP_PROVIDERS} from 'angular2/http';
import 'rxjs/Rx';

@Component({
selector: 'my-app',
template: '<div *ngFor="#contact of contacts">Id: {{contact._id}} Name: {{contact.name}}</div>',
providers: [HTTP_PROVIDERS]
})

export class Test {

public contacts: Contact[] = [];

constructor(private http: Http) {}

ngAfterViewInit() {
this.http.get('/api/contactlist')
.map((res: Response) => res.json())
.subscribe(res => {
console.log(res);
this.contacts = res;
});
}
}

export class Contact {
constructor (public _id: string, public name: string, public email: string, public number: string) {};
}

bootstrap(Test);

http://localhost:3000/api/contactlist

[{"_id":"5695e53d98ff94671ae22d55","name":"Piet Pannenkoek","email":"piet@gmail.com","number":"435345"},{"_id":"56a63059b2cb5f4b10efaf9a","name":"Jan Janssen","email":"jan@email.com","number":"642"},{"_id":"56a6307bb2cb5f4b10efaf9b","name":"Gerard de Boer","email":"gerard@email.com","number":"1234"},{"_id":"56abe853211b52a441f6c45f","name":"Bjorn Borg","email":"bjorn@borg.com","number":"123"},{"_id":"56abe8da211b52a441f6c460","name":"Hans Dobbelsteen","email":"hans@email.com","number":"752"},{"_id":"56abe8fe211b52a441f6c461","name":"Marco van Basten","email":"marco@email.com","number":"961"}]

最佳答案

您正试图在 contact 对象被解析之前使用它。使用 elvis-operator {{ contact?._id }} 或有条件地显示 block :

template: `
<div *ngIf="contact">Id: {{contact._id}} Name: {{contact.name}}</div>
`,

关于http - Angular2 Http未定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35504468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com