我是Angular的新手,试图构建一个电影应用程序。如何显示本地Json文件中的数据?
我想从我的本地机器上的JSON文件中获取数据。我可以在MovieListComponent中显示来自JSON文件的所有电影。但是,当用户点击特定电影的视图细节时,我无法在MovieDetail组件中显示数据。
MovieListComponent.ts
import {Component ,OnInit} from '@angular/core';
import {MovieService} from '../services/movie.service';
import {Router} from '@angular/router';
import {Movie} from '../movie';
@Component({
moduleId:module.id,
templateUrl: 'search.html',
})
export class MovieListComponent implements OnInit {
movies:Movie[];
constructor(
private _movieservice:MovieService,
private router:Router){
}
getMovies():void{
this._movieservice.getMovies().then(movies => this.movies = movies);
}
ngOnInit(){
this.getMovies();
}
onSelect(movie:Movie):void{
this.router.navigate(['/movies',movie.id]);
console.log(movie.title);
}
}
MovieDetailComponent.ts
import {Component,OnInit} from '@angular/core';
import {ActivatedRoute,Params} from '@angular/router';
import {Location} from '@angular/common';
import 'rxjs/add/operator/switchMap';
import {MovieService} from '../services/movie.service';
import {Movie} from '../movie';
@Component({
template:`<div *ngIf="movie">
{{movie.title}}
<h4>You're seleted departmentId is = {{movie.id}} </h4>
</div>`
})
export class ViewDetailComponent implements OnInit{
movie:Movie;
constructor(
private route:ActivatedRoute,
private movieservice:MovieService,
private location:Location){}
ngOnInit():void{
this.route.params
.switchMap((params:Params) => this.movieservice.getMovie(+params['id']))
.subscribe(movie => this.movie = movie);
}
}
MovieService.ts
import{Injectable} from '@angular/core';
import {Http} from '@angular/http';
import {Movie} from '../movie';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class MovieService{
private movieUrl = './app/movies.json';
constructor(private _http:Http){
console.log('Movie Service up and running');
}
getMovies():Promise<Movie[]>{
return this._http.get(this.movieUrl)
.toPromise().then(res => res.json() as Movie[]);
//.map(res => res.json());
}
getMovie(id: number):Promise<Movie>{
// const url = `${this.movieUrl}/${id}`;
return this._http.get(this.movieUrl)
.toPromise().then(res => res.json() as Movie)
}
}
这可能会帮助你。 http://stackoverflow.com/questions/42620548/angular2-how-to-use-json-data-in-service-ts?rq=1 – amansoni211