在阅读了几乎所有关于可观察物的知识之后,我仍然不太了解它们的工作原理。

我在这里执行http请求:

import { Component, OnInit, Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { NavController } from 'ionic-angular';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

@Injectable()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

    webs: any;

    getWebs(): any{
        return this.http.get( 'here the url' )
        .map((res: Response) => res.json());
    }

    constructor(public navCtrl: NavController, private http: Http) {}

    ngOnInit(){
        this.getWebs().subscribe(response => {
            this.webs = response;
            console.log(this.webs);
        });
    }
}

在控制台上,正确打印this.webs。这意味着,get请求可以正常工作,而我正在检索所需的对象。那是一个普通的JSON对象。

问题是,在 View 上,如果我尝试像这样打印对象的某些属性(在控制台上看到的相同属性)
{{ webs.name }}

我总是得到那个错误:
Error in ./HomePage class HomePage - caused by: Cannot read property 'name' of undefined

Angular 1真是太容易了:(我已经读了很多教程,但是找不到我的问题的答案。

谢谢你的帮助。

最佳答案

在返回http响应之前,将显示该 View 。

{{webs?.name}}

应该管用。
或者做this.webs=getWebs(){{webs.name | async}}

10-02 14:38