如何通过Angular4 HTTP Get从JSON文件访问单个元素?

时间:2018-07-27 20:25:59

标签: angular http get rxjs

我的JSON文件的结构如下:

 [
    {id: 1,
     title: "First Element"
    },
    {id: 2,
     title: "Second Element"
    },
    {id: 3,
     title: "Third Element"
    }
 ]

通过调用类似的东西,我已经能够成功检索整个JSON数组(文件)

Component.ts:

this.dataService.getAll()
    .subscribe(
        (data: Book[]) => this.myData = data,
        (err: any) => console.log(err)
    );

Service.ts

getAll(): Observable<any> {
    return this.http.get<any>(this.apiURL)

其中apiURL是我的库中本地json文件的路径。如果可能的话,如何仅获取ID为1且标题为“ First element”的第一个元素?

我一直在尝试:

getBookById(title: String) Observable<Book> {
    return this.http.get<Book>(this.apiURL + `/${title}`) 

使用相同的component.ts方法,但使用Book而不是Book []。但是它失败并显示HTTPGet错误,提示找不到它。这是有道理的,因为我感觉缺少标题和URL之间的字段(用于访问或解析每个元素),但是我是否缺少某些语法,还是其他呢?感谢您的帮助和时间。

1 个答案:

答案 0 :(得分:0)

我只是重新阅读了您的文章(也许您已对其进行了更新),它特别表明您正在阅读JSON文件。因此,我认为该文件在客户端上是本地的。

如果是这样,则没有机制可以使用http从JSON文件中检索单个元素。您只能读取整个文件。

可以然后将结果过滤为仅所需的结果,或在数组中找到结果。

例如,这是我的一个:

products.find(p => p.productId === id))

这会按ID查找特定产品,其中products是我检索到的数组。