2017-10-11 153 views
-1

即時得到我的角2腳本標題中的錯誤,通過我的服務檢索數據時,但頁面組件仍然顯示信息,使用{{bedriften}},即使我得到錯誤。我不知道我做錯了什麼。當我打電話給console.log(this.bedriften)時,它是未定義的,但顯示在頁面上。林不知道該如何正確之前顯示用戶的頁面加載信息(我的意思是這樣的this.bedriften填充)「錯誤類型錯誤:無法讀取屬性‘...’的未定義」在角2

我的服務:

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 

@Injectable() 
export class HendingService { 
alleHendingar: any; 
data: any; 
constructor(private http: Http) { } 
bed: any; 

hentHendingar() { 
return this.http.get("http://ekstremedia.no/rapporter/allehendingar.json") 
    .map(res => res.json()); 
} 
hentBedrift(bed) { 
    return this.http.get("http://localhost:81/vossapp/get/bedrift/"+bed) 
    .map(res => res.json()); 
    } 
} 

我的頁面,在那裏我得到的錯誤:

import { Component, OnInit, AfterContentInit } from '@angular/core'; 
import { ActivatedRoute } from '@angular/router'; 
import { HendingService } from '../../hending-service.service'; 

@Component({ 
    selector: 'app-bedriftside', 
    templateUrl: './bedriftside.component.html', 
    styleUrls: ['./bedriftside.component.scss'], 
    providers: [HendingService] 
}) 

export class BedriftsideComponent implements OnInit { 
id: number; 
private sub: any; 
bedriften: any; 
constructor(private route: ActivatedRoute, private hs: HendingService) { } 

ngOnInit() { 

    this.sub = this.route.params.subscribe(params => { 
     this.id = params['id']; 
    }); 

    this.hs.hentBedrift(this.id) 
    .subscribe(data => { 
     this.bedriften = data 
    });  
    console.log(this.bedriften); // undefined 
    } 

} 

回答

0

你放置的console.log外的認購,一旦接收到響應,你應該能夠訪問它

this.hs.hentBedrift(this.id) 
    .subscribe(data => { 
     this.bedriften = data; 
     console.log(this.bedriften); 
    }); 

而且在模板中,你需要檢查,如果存在價值,經安全導航操作

<h1> {{bedriften?.title}}</h1> 
+0

但是,頁面組件我做{{bedriften.title}}和我在控制檯此錯誤信息上:ERROR TypeError:無法讀取未定義的屬性'標題'。但在頁面上顯示標題正確。它的工作原理,但顯然我做錯了。 –

+0

您可以使用安全導航操作{{bedriften?.title僞}} – Sajeetharan

+0

工程。這是常見的做法嗎? –

相關問題