我使用Angular服务从URL获取JSON数据。代码在下面,
import { Injectable } from '@angular/core';
import {Http,Response} from "@angular/http";
import { Observable } from "rxjs";
import "rxjs/Rx";
import {FilterJson} from "./filter-json";
@Injectable({
providedIn: 'root'
})
export class ApiService {
private postsURL ="http://myapp/explore/json1";
constructor(private http: Http ) {}
getPosts(): Observable<FilterJson[]>{
return this.http
.get(this.postsURL)
.map((response: Response)=> {
return <FilterJson[]>response.json();
})
.catch(this.handleError);
}
private handleError(error: Response) {
return Observable.throw(error.statusText);
}
}
现在,我已经创建了几个json文件,例如json2,json3和json4。通过组件标记中的click事件,我需要更改URL中的json文件。
例如,我在组件的标记中具有三个锚标记。我需要通过单击每个锚点来获取每个json文件。我该怎么做?
答案 0 :(得分:2)
您需要将jsonfile名称json1 | json2 | json3作为输入参数传递给get posts方法。
import { Injectable } from '@angular/core';
import {Http,Response} from "@angular/http";
import { Observable } from "rxjs";
import "rxjs/Rx";
import {FilterJson} from "./filter-json";
@Injectable({
providedIn: 'root'
})
export class ApiService {
private postsURL ="http://myapp/explore/";
constructor(private http: Http ) {}
getPosts(accesstype): Observable<FilterJson[]>{
const _postsURL = this.postsURL + accesstype;
return this.http
.get(_postsURL)
.map((response: Response)=> {
return <FilterJson[]>response.json();
})
.catch(this.handleError);
}
private handleError(error: Response) {
return Observable.throw(error.statusText);
}
}