Angular 角4和角5之间映射函数的作用
以下是我在Angular 4中编写的代码: 服务:Angular 角4和角5之间映射函数的作用,angular,Angular,以下是我在Angular 4中编写的代码: 服务: import {Inject, Injectable} from '@angular/core' import { Http } from "@angular/http"; import 'rxjs/add/operator/map'; @Injectable() export class Service1 { constructor(private http:Http, @Inject('BASE_URL') private bas
import {Inject, Injectable} from '@angular/core'
import { Http } from "@angular/http";
import 'rxjs/add/operator/map';
@Injectable()
export class Service1 {
constructor(private http:Http, @Inject('BASE_URL') private baseUrl: string) { }
loadData() {
return this.http.get(this.baseUrl + 'api/Listes/').map( res => res.json());
}
...
import { HttpClient } from '@angular/common/http';
...
@Injectable()
export class Service1
{
constructor(private http: HttpClient, @Inject('BASE_URL') private baseUrl: string) { }
loadData()
{
return this.http.get<Liste[]>(this.baseUrl + 'api/Lists/');
}
组成部分:
import { Component } from '@angular/core';
import {Service1} from "../../services/service1.service";
import {Liste} from "../../models/Liste";
...
export class Composant1Component {
private donnees:Liste[]
constructor(private service1:Service1) { }
ngOnInit()
{
this.service1.loadData().subscribe(res => { this.donnees = res });
}
}
export class Composant1Component
{
private donnees:Liste[];
constructor(private service1:Service1) { }
ngOnInit()
{
this.service1.loadData().subscribe(res => { this.donnees = res });
}
...
现在,看看角度5的区别:
服务:
import {Inject, Injectable} from '@angular/core'
import { Http } from "@angular/http";
import 'rxjs/add/operator/map';
@Injectable()
export class Service1 {
constructor(private http:Http, @Inject('BASE_URL') private baseUrl: string) { }
loadData() {
return this.http.get(this.baseUrl + 'api/Listes/').map( res => res.json());
}
...
import { HttpClient } from '@angular/common/http';
...
@Injectable()
export class Service1
{
constructor(private http: HttpClient, @Inject('BASE_URL') private baseUrl: string) { }
loadData()
{
return this.http.get<Liste[]>(this.baseUrl + 'api/Lists/');
}
我不明白map()函数之前的确切作用是什么。为什么在Angular 5中不需要这个调用?HttpClient和Http都返回一个可观察的,不是吗
感谢Angular在其第四个版本中集成了一个新的HTTP调用API,名为
HttpClient
旧版本被称为Http
在旧的API中,必须使用名为json()
的内部函数转换答案,该函数用于将响应映射到可读对象。这就是为什么你使用地图
在新的API中,他们看到大部分时间只返回响应。因此,他们决定放弃旧的json
调用,直接返回响应的内容。但别担心,您仍然可以看到您提出的请求的其他部分。这不再是默认行为 我确信它的行为在4和5之间没有区别。问题一定是您正在调用的URL(this.http.get(this.baseUrl+'api/Listes/')
)是否检查了浏览器控制台的错误?1。map
是获取响应并提取JSON,因此res.JSON()
。2.现在不需要了,因为HttpClient
与Http
不同,默认情况下提取JSON;看见它们都返回可观察的,是的,但默认情况下是不同的。我在介绍新客户机时写了一篇博客文章,可能有用:谢谢,但是如果我的服务不是返回json,而是返回一个原始二进制文件(例如),会发生什么情况呢?在这种情况下,你可以,他们会解释你需要了解的关于阅读完整响应的所有信息!