角度显示Django Rest Framework json

问题描述 投票:0回答:1

我对AngularJS很新,所以请原谅这个问题的简单性。

我正在使用Django Rest Framework并试图通过Angular JS提取细节并显示它们。我正在复制另一个项目,只是尝试扩展它以便学习。我有以下文件:

酒吧details.ts

export interface BarDetails {
    id?: number;
    name: string;
    address: string;
    description?: string;
    type?: string;
    openingTime?: number;
    closingTime?: number;
  }

酒吧details.provider.ts

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { BarDetails } from './bar-details';
import 'rxjs/add/operator/map';
import { environment } from '../../environments/environment';

@Injectable()
export class BarDetailsProvider {

  constructor(private http: Http) { }

  getBarDetails(): Observable<BarDetails[]> {
    return this.http.get(`${environment.baseUrl}/bar/1`).map(response => response.json().results as BarDetails[]);
  }
}

酒吧details.components.ts

import { Component, OnInit } from '@angular/core';
import { BarDetails } from './bar-details';
import { BarDetailsProvider } from './bar-details.provider';

@Component({
  selector: 'app-bar-details',
  templateUrl: './bar-details.component.html',
  styleUrls: ['./bar-details.component.scss']
})
export class BarDetailsComponent implements OnInit {

  barDetails: BarDetails[] = [];

  constructor(private barDetailsProvider: BarDetailsProvider) { }

  ngOnInit() {
    this.barDetailsProvider.getBarDetails().subscribe(barDetails => this.barDetails = barDetails);
  }

}

酒吧details.component.html

<div *ngIf="barDetails">
  <h1>{{barDetails.name}}</h1>
  <div>Address: {{barDetails.address}}</div>
</div>

我的查询(现在总是返回pk = 1)返回:{"pk":1,"name":"Carpe Diem","description":"Moderno local con mobiliario minimalista, mesas altas y sofás.","address":"Calle Dr. Fleming, 11","type":"Pub","openingTime":9,"closingTime":24}

我的浏览器显示空白页面。这是生成的HTML。

<app-bar-details _nghost-c1=""><!--bindings={}-->
</app-bar-details>

在哪里我认为会显示酒吧名称和地址。我错了什么?

angular
1个回答
0
投票

这是我出错的地方:

@Injectable()
export class BarDetailsProvider {

  constructor(private http: Http) { }

  getBarDetails(): Observable<BarDetails[]> {
    return this.http.get(`${environment.baseUrl}/bar/1`).map(response => response.json().results as BarDetails[]);
  }
}

应该

@Injectable()
export class BarDetailsProvider {

  constructor(private http: Http) { }

  getBarDetails(): Observable<BarDetails> {
    return this.http.get(`${environment.baseUrl}/bar/1`).map(response => response.json() as BarDetails);
  }
}

barDetails不是一个跟随其他文件的数组。

© www.soinside.com 2019 - 2024. All rights reserved.