Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 无法映射后响应角度7_Angular_Typescript - Fatal编程技术网

Angular 无法映射后响应角度7

Angular 无法映射后响应角度7,angular,typescript,Angular,Typescript,我正在尝试在Angular version 7上设置服务,但我在res.json()上遇到问题,这会引发错误类型“Object”上不存在属性“json”。这是我的服务代码: import {Injectable} from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {Observable} from "rxjs"; import 'rxjs/add/operator/map'; import

我正在尝试在Angular version 7上设置服务,但我在
res.json()
上遇到问题,这会引发错误
类型“Object”上不存在属性“json”
。这是我的服务代码:

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {Observable} from "rxjs";
import 'rxjs/add/operator/map';
import { map } from 'rxjs/operators';

import {
    SVCParameters,
    SVCResult
} from "./types";

const SERVER_URL: string = 'api/';

@Injectable()
export class IrisService {

    constructor(private http: HttpClient) {
    }

    public trainModel(svcParameters: SVCParameters): Observable<SVCResult> {
        return this.http.post(`${SERVER_URL}train`, svcParameters).pipe(map(res => res.json()));

    }
}

Angular 7 HttpClientModule,默认情况下返回响应为
JSON
,无需将响应映射为
res.JSON()
,只需删除管道操作符即可。一切都会好起来的

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {Observable} from "rxjs";
import 'rxjs/add/operator/map';
import { map } from 'rxjs/operators';

import {
    SVCParameters,
    SVCResult
} from "./types";

const SERVER_URL: string = 'api/';

@Injectable()
export class IrisService {

    constructor(private http: HttpClient) {
    }

    public trainModel(svcParameters: SVCParameters): Observable<SVCResult> {
        return this.http.post(`${SERVER_URL}train`, svcParameters);

    }
}
从'@angular/core'导入{Injectable};
从'@angular/common/http'导入{HttpClient};
从“rxjs”导入{observeable};
导入'rxjs/add/operator/map';
从“rxjs/operators”导入{map};
进口{
SVC参数,
SVC结果
}从“/类型”;
const SERVER_URL:string='api/';
@可注射()
导出类IrisService{
构造函数(专用http:HttpClient){
}
公共列车模型(svcParameters:svcParameters):可观察{
返回这个.http.post(`${SERVER\u URL}train`,svcParameters);
}
}

只需删除新HttpClient(Angular 4.3+)中的
映射
可能的副本,默认情况下响应对象是JSON,因此您不再需要执行response.JSON()。直接使用response我得到了以下错误:类型“Observable”不可分配给类型“Observable”。“对象”类型可分配给很少的其他类型。你的意思是用“any”类型吗?类型“Object”中缺少属性“accurity”,但类型“SVCResult”中需要属性“accurity”。请尝试
any
,如果一切正常,请尝试找出适合的类型以及响应是否具有该类型的所有属性。我已将“Observable”替换为“any”,错误消失。我真的希望这就是我应该做的,因为我只是在学习
import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {Observable} from "rxjs";
import 'rxjs/add/operator/map';
import { map } from 'rxjs/operators';

import {
    SVCParameters,
    SVCResult
} from "./types";

const SERVER_URL: string = 'api/';

@Injectable()
export class IrisService {

    constructor(private http: HttpClient) {
    }

    public trainModel(svcParameters: SVCParameters): Observable<SVCResult> {
        return this.http.post(`${SERVER_URL}train`, svcParameters);

    }
}