Angular服务中的json调用的可变URL

时间:2018-08-21 08:48:03

标签: angular

我使用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文件。我该怎么做?

1 个答案:

答案 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);
 }
}