angular2的http服务是用于从后台程序获取或更新数据的一种机制,通常情况我们需要将与后台交换数据的模块做出angular服务,利用http获取更新后台数据,angular使用http的get或put进行后台调用采用的是ajax方式,跨域问题需要单独处理。下面来看一个例子,演示从后台web api中获取数据并进行页面加载。

1、由于要使用http服务,所以我们一定要在我们的web页面需要引入<script src="node_modules/angular2/bundles/http.dev.js"></script>,这步很关键,我之前发生的找不到http服务的原因就在此,浪费了很多时间在此。

2、在angular入口还需引入HTTP_PROVIDERS,并注入,同时由于要使用map,subscribe等所以需要使用rxjs库,那么就需要提前在入口程序中引入import 'rxjs/Rx',血的教训

import {bootstrap} from 'angular2/platform/browser';

import {HTTP_PROVIDERS} from 'angular2/http';

import {myFrame} from "./frame/component/myFrame.component";

import 'rxjs/Rx';

bootstrap(myFrame, [ HTTP_PROVIDERS]);

3、创建服务

///<reference path="../../../node_modules/angular2/typings/browser.d.ts"/>

import {Injectable} from 'angular2/core';

import {Http } from 'angular2/http';

@Injectable()

export class channelService {

private _carsUrl: string = "http://localhost:6611/api/Chanel";

constructor(private _http: Http) {

}

getChannelList() {

return this._http.get(this._carsUrl).map(responce => responce.json())

}

在这个服务中使用了http中的get来获取数据,这里get的url(web api)是与我目前的anuglar应用在一个域内。作为服务我们需要申明该服务是可注入的@Injectable()

4、服务调用

///<reference path="../../../node_modules/angular2/typings/browser.d.ts"/>

import {Component} from 'angular2/core';

import {appService} from './../service/appsetting.service'

import {channelService} from './../service/channel.service'

import {Channel} from './../model/channel'

@Component({

selector: 'topNav',

templateUrl: '../app/frame/template/topNav.html',

providers: [appService, channelService]

})

export class topNav {

webTitle: string;

public items: Channel[];

constructor(private _appService: appService,private _channelService:channelService) {

this.getWebTitle();

this.getChannelList();

}

getWebTitle() {

this.webTitle = this._appService.AppSetting.webTitle;

}

getChannelList() {

this._channelService.getChannelList().subscribe(res => { this.items=res});

}

}

这里就和普通服务调用没什么区别了,需要先import再在providers中申明,然后在构造函数中注入就行了。

这个例子中有个需要注意的是我们前端model和后端model有可能不一致,那么需要在获取数据后再进行转换,如果类型字段都一致那么可以直接使用,由于是json格式,系统会自动将后台model转换为我们前端使用的model

Web api:

public class ChanelController : ApiController

{

// GET api/<controller>

public IEnumerable<Chanel> Get()

{

return new Chanel[] { new Chanel{ ID="1", ChanelName="组织机构"},new Chanel{ ID="2",ChanelName="通知公告"} };

}

}

注:web api 可以使用Swashbuckle 进行测试,安装 PM> Install-Package Swashbuckle,使用时只需在路径后加入swagger,如http://localhost:6611/swagger/ui/index

学习到这里了,逐步开始向实际应用转换,中间的每一步都是血泪史。

angularjs2 学习笔记(五) http服务的更多相关文章

  1. spring cloud学习笔记五 网关服务zuul

    网关服务是指,客户端发送的请求不用直接访问特定的微服务接口,而且是经过网关服务的接口进行交互,网关服务再去到特定的微服务中进行调用.   网关服务的路由功能和Nginx的反向代理一样,所有的服务都先会 ...

  2. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  3. Angularjs2 学习笔记

    angularjs2 学习笔记(一) 开发环境搭建   开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装nod ...

  4. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  5. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...

  6. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  7. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  8. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  10. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. css+js+html基础知识总结

    css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...

  2. 慕课网-安卓工程师初养成-2-9 Java中的自动类型转换

    来源:http://www.imooc.com/code/1236 在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换.例如: , 代码中 int 型变量 score1 可以直接为 ...

  3. iPad用户使用Mac和Windows应用软件-记Parallels Access使用体验

    iPad用户使用Mac和Windows应用软件-记ParallelsAccess使用体验 用ipad远程连接win系统已不是新鲜事情,我们可以使用TeamViewer和OnLiveDesktopPlu ...

  4. Redis 1:简介

    导读:在今日开讲的项目中,用到了redis数据库.老听大家在说,我都不知道是个啥玩意儿.然后这两天在准备知识分享的事儿,我先大概了解了解,然后讲的时候,能有点共鸣.所以,本篇博客,是在自己跟读完MVA ...

  5. [AngularJS 1] Introduction to AngularJS

    introduction:this article is going to introduce AngularJS in generally. I will write it through five ...

  6. 【IHttpHandler】了解 IHttpHandler

    1 .概述 说明:HttpHandler是一个HTTP请求的真正处理中心.在HttpHandler容器中,ASP.NET Framework才调用HttpHandler的ProcessRequest成 ...

  7. 使用SSL确保通信中的数据安全

    #region Server /// <summary> /// 用于保存非对称加密(数字证书)的公钥 /// </summary> private string public ...

  8. poj1942 Paths on a Grid

    处理阶乘有三种办法:(1)传统意义上的直接递归,n的规模最多到20+,太小了,在本题不适用,而且非常慢(2)稍快一点的算法,就是利用log()化乘为加,n的规模虽然扩展到1000+,但是由于要用三重循 ...

  9. php+mysql简单留言,适合新手

    <html> <head> <title> php留言板 </title> <style> p,textarea{vertical-alig ...

  10. 001Linux命令

    1.删除非空目录的命令:rm -rf [目录名],r表示迭代,f表示强制: 删除空目录:rmdir [目录名]: 删除文件:rm [文件名]: 2.用户管里类命令: (1)添加用户:useradd [ ...