angular 2 http得到404

时间:2017-04-07 16:40:59

标签: angular typescript

我正在尝试复制ngPrime数据表演示https://github.com/primefaces/primeng。我目前正在使用最新版本的angular(4),以及angular-cli(开发模式)。我将一个json文件放入我的app文件夹,这是该服务所在的位置。我试图弄乱路径,但我无法弄清楚这一点。我继续得到404。

import {Injectable} from '@angular/core';
import {Http, Response} from '@angular/http';
import {Car} from './car';

import 'rxjs/add/operator/toPromise';

@Injectable()
export class CarService {

constructor(private http: Http) {}

getCarsSmall() {
    return this.http.get('./cars-small.json')
                .toPromise()
                .then(res => <Car[]> res.json().data)
                .then(data => { return data; });
 }
}

这是他们网站的src。我必须导入rxjs toPromise并修改角度核心包定义。

import {Injectable} from 'angular2/core';
import {Http, Response} from 'angular2/http';
import {Car} from '../domain/car';

@Injectable()
export class CarService {

constructor(private http: Http) {}

getCarsSmall() {
    return this.http.get('/showcase/resources/data/cars-small.json')
                .toPromise()
                .then(res => <Car[]> res.json().data)
                .then(data => { return data; });
 }
}

使用完整路径解决了问题:

return this.http.get('/src/app/cars-small.json')

2 个答案:

答案 0 :(得分:1)

由于某些原因,使这项改变奏效 -

return this.http.get('/src/app/cars-small.json')

当文件处于同一级别时,我真的不明白为什么我必须上两个目录。我试过app / cars-small.json,但这也没用。

答案 1 :(得分:0)

也许您应该将文件夹添加到webpack包中作为资产目录。然后,您可以http.get('api/config.json')...

申请
  "apps": [
{
  "root": "src",
  "outDir": "dist",
  "assets": [
    "api",
    "assets",
    "favicon.ico"
  ],....