我正在尝试通过访存使用OMDB api,并且在网络中看到我的数据库正在工作。 但是它没有显示在我的Angular 6页面上。 我在这段代码中缺少什么?
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class DataService {
constructor(private http: HttpClient) { }
getData() {
return fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b');
}
}
还有这个
import { DataService } from './../data.service';
import { Component, OnInit } from '@angular/core';
import {Observable} from 'rxjs';
@Component({
selector: 'app-movie-list',
templateUrl: './movie-list.component.html',
styleUrls: ['./movie-list.component.css']
})
export class MovieListComponent implements OnInit {
movies = [
{Title: 'Harry Potter'},
{Title: 'Space Jam'}
]
constructor(private data:DataService) { }
ngOnInit() {
// fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b')
// .then(response => response.json())
// .then( res => this.movies = res);
this.data.getData()
.then((response) => {response.json()
.then((data)=> {this.data = data;
});
});
}
还有这个
<p>
movie-list works!
</p>
<div class="card">
<ul>
<li *ngFor="let movie of movies">
<h2>{{movie.Title}}</h2>
<h3>{{movie.Plot}}</h3>
</li>
</ul>
</div>
这就是我得到的...看下面的图片。
我该怎么做才能从数据库中查看标题和情节?
谢谢您的帮助!
答案 0 :(得分:1)
我认为response.json()
必须与fetch
一起
getData() {
return fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b')
.then((response) => {
response.json()
});
}
this.data.getData().then((data) => {
this.data = data;
});
此外,响应是一个对象,因此您需要将该对象推送到数组以使用*ngFor
答案 1 :(得分:1)
您尚未将获取的数据添加到电影阵列中。
movies = [
{Title: 'Harry Potter'},
{Title: 'Space Jam'}]
这就是为什么您看不到所需数据的原因。
编辑:您可以尝试执行以下操作:
let movies = [];
function doFetch() {
fetch('http://www.omdbapi.com/?i=tt3896198&apikey=9fa6058b', {
method: "get"
}).then(function (response) {
return response.text();
}).then(function (text) {
let json = JSON.parse(text);
let data = { Title: json.Title, Plot: json.Plot }
movies.push(data);
});
}
doFetch();
这样,您将用数据填充数组以供以后显示。