2017-03-02 8 views
2

저는 Angular 2를 사용 중이며 API 호출을 통해 일부 JSON을 돌려 받고 있습니다. 전화가 작동하고 응답을받습니다.angular2에서 정의되지 않은 속성을 읽을 수 없습니다.

<pre>{{v | json}}</pre> 

을 그리고 이것은 나에게 내 JSON을 보여줍니다 ...

{ 
    "user": { 
    "id": "794149", 
    "tag_name": "", 
    "tag_id": "0", 
    "tag_style": { 
     "color": null, 
     "font": null, 
     "style": "label-default" 
    } 
    }, 

을하지만 어떻게 내가 사용자의 ID를 표시 할 수 있습니다 내 템플릿 내에서

export class DetailsPage { 

    public userID; 
    v: any = {};   

    constructor(public navCtrl: NavController, public navParams: NavParams, public http: Http) { 

    this.userID = navParams.get('userID'); 

    var headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 

    let urlSearchParams = new URLSearchParams(); 
    let body = urlSearchParams.toString(); 

    this.http.get('http://api.domain.com/visitor/'+this.userID, {headers:headers}).map(res => res.json()).subscribe(data => { 
     this.v = data.res; 
    }); 

    } 

} 

나는이?

내가 시도 ..

{{ v.user.id }} 

그러나이 나에게 오류를 제공합니다

Error in ./DetailsPage class DetailsPage - caused by: Cannot read property 'id' of undefined 

답변

6

개체의 속성에 바인딩하려면 null을 사용하여 안전한 항해 운영자 "?" 될 수 있습니다.

{{v?.user?.id}} 
+0

그래도 작동합니다! 어떻게 왔어? v.user.id가 있다는 것을 알고 있습니다. 템플리트가 처음으로로드 될 때 정의 된 것이 아니라 한 순간 후에 존재하지만 이전에 너무 늦었고 오류가 이미 발생 된 경우입니까? – Chris

+0

@Chris, 예 - 그게 다 – snorkpete

+0

소원 나는 12 시간 전에 이것을 알고 있었다 !!!! 고맙습니다 – Chris

관련 문제