1

API から JSON データを取得し、angular 2 を使用してそのコンテンツを表示しようとしています。会話コンポーネント:

export class ConversationComponent implements OnInit {
    public conversation: any;

    constructor(private conversationsService: ConversationsService,
                private routeParams: RouteParams) { }


    ngOnInit() {
        let id = +this.routeParams.get('id');
        this.conversationsService.getConversation(id)
            .subscribe(
            con => this.conversation = con,
            error => console.log(this.conversation)
            )
    }
}

会話サービス:

@Injectable()
export class ConversationsService {

    private url = 'https://dev4.aldensys.com/PrometheusWebAPI/api/Conversations/';
    private token = this.storageService.getAuthorizationToken();

    constructor(private http: Http, private storageService: StorageService) { }

    getConversation(id: number) {
        var headers = new Headers();
        headers.append('Authorization', 'Bearer ' + this.token);
        var options = new RequestOptions({ headers: headers });
        return this.http.get(this.url + id, options)
            .map(res => res.json())
            .catch(this.handleError);
    }

    private handleError(error: any) {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 'Server error';
        console.error(errMsg); // log to console instead
        return Observable.throw(errMsg);
    }
}

何らかの理由で this.conversation は定義されていません。サービスファイルでjsonにマップした直後に応答を警告しようとしました:「オブジェクト:オブジェクト」と表示されます

どんな助けでも大歓迎です。

4

1 に答える 1

2

分かりました。問題は、データが入る前にテンプレートにエラーが表示されることです。

これを使って

{{conversation?.number}}

Angular2 では、Angular1 と比較してそれほど許されるものではありません

ここにドキュメントの参照があります

于 2016-06-29T19:05:29.750 に答える