错误:未捕获(在承诺中):状态为响应:角度为2的URL未找到404

raj*_*j m 2 angular

我有如下服务

    return this._http
    .post('/app/php/reports.php', data.toString(), 
     {headers:        this.headers})
    .toPromise()
    .then(res => res.json().data)
    .catch(this.handleError);
Run Code Online (Sandbox Code Playgroud)

我正在将我的代码从普通JS转换为angular.正常的ajax调用它工作正常.但我可以使用angular2发布帖子.有人可以建议我,为什么不打电话给.php

进口的东西是

import { Headers, Http, Response } from '@angular/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/toPromise';
Run Code Online (Sandbox Code Playgroud)

标题定义如下

private headers = new Headers({'Content-Type': 'application/json'});
Run Code Online (Sandbox Code Playgroud)

如果我在控制台错误中单击URL,则下载php文件.这意味着URL是正确的.

小智 16

如果您使用的InMemoryWeApiModule.forRoot(InMemoryDataService)是'app.module.ts'@NgModule导入,请尝试将其更改为:

InMemoryWeApiModule.forRoot(InMemoryDataService, {passThruUnknownUrl: true})

通过实时XHRBackend 如果现有的运行远程服务器应处理不在内存数据库中的集合请求,请设置 Config.passThruUnknownUrl:true.此服务将通过Angular XHRBackend的基本版本转发无法识别的请求. https://github.com/angular/in-memory-web-api#pass-thru-to-a-live-xhrbackend

app.module.ts
... 

// Imports for loading & configuring the in-memory web api

import { InMemoryWebApiModule } from 'angular-in-memory-web-api';
import { InMemoryDataService }  from './in-memory-data.service';

@NgModule({
  imports:  [
    ...
    InMemoryWebApiModule.forRoot(InMemoryDataService, {passThruUnknownUrl: true}), // fake in memory API simulation
  ],
  ...
Run Code Online (Sandbox Code Playgroud)