添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

i'm trying to use angular 4 to call to a dummy web api, here is my component

export class AppComponent {
    title = 'app';
    url = 'https://api.ipify.org/?format=json';
    results: any;
    constructor(private http: Http) {
        this.getData().subscribe(data => {
            this.results = data.json();
    getData() {
        return this.http.get(this.url);
but when i try to display it i get the result but also a screen of error 

ERROR TypeError: Cannot read property 'ip' of undefined

what i want to understand is why it is shown because after a split second the data is well displayed .

In your *ngFor you can change it to *ngFor="let r of results | async"

Your problem is that the data isn't there yet, so it can't read the id property.

If you use the async pipe, it should wait for the data to come before displaying it.

thank you but i can't do that in all my project i was wondering if im doing something out of the standards – Ayoub Idelhoussain Jul 11, 2017 at 14:07

You get this error also if you add your component to the import array instead of the declaration array.

@NgModule({
  imports: [
    someComponent
  declarations: [...],
export class MainModule { }

Should be

@NgModule({
  imports: [
  declarations: [...,someComponent],
export class MainModule { }

if you have more than one property you can use a class and inject them there , then it would be no problem . otherwise if you have just one single variable and u want it to be displayed pls use the safe navigation operator user?.name