一、创建服务

  1. ng generate service service-name #简写 ng g s component-name
  2. ng g s services/userService

二、效果

三、开发服务

修改\src\app\services\user-service.service.ts文件

  1. import { Injectable } from '@angular/core';
  2. import { Http } from '@angular/http';
  3. import 'rxjs/add/operator/toPromise';
  4.  
  5. @Injectable()
  6. export class UserServiceService {
  7. private api = 'http://localhost:3003'; // 服务器地址
  8. private gundamList = '/news'; // 获取全部
  9. private getGundam = '/detail'; // 获取明细
  10.  
  11. constructor(private http: Http) { }
  12. // 获得全部数据
  13. getGundams(): Promise<any[]> {
  14. return this.http.get(this.api + this.gundamList)
  15. .toPromise()
  16. .then(response => response.json())
  17. .catch(this.handleError);
  18. }
  19.  
  20. // 根据Id查询高达
  21. getGundamById(id: number): Promise<object> {
  22. console.log(this.api + this.getGundam + '?id=' + id);
  23. return this.http.get(this.api + this.getGundam + '?id=' + id)
  24. .toPromise()
  25. .then( response => response.json())
  26. .catch(this.handleError);
  27. }
  28.  
  29. private handleError(error: any): Promise<any> {
  30. console.error('An error occurred', error); // for demo purposes only
  31. return Promise.reject(error.message || error);
  32. }
  33. }

四、全局注册服务

修改\src\app\app.module.ts文件

  1. import {UserServiceService} from './services/user-service.service';
  2.  
  3. /* 注册服务 */
  4. providers: [UserServiceService],

五、使用服务

修改\src\app\components\users\list\list.component.ts文件

  1. import {Component, OnInit} from '@angular/core';
  2. /*import { Http } from '@angular/http'; 添加Http请求模块 */
  3. import {UserServiceService} from '../../../services/user-service.service';
  4. import {
  5. ActivatedRoute,
  6. Params
  7. } from '@angular/router';
  8.  
  9. @Component({
  10. selector: 'app-list',
  11. templateUrl: './list.component.html',
  12. styleUrls: ['./list.component.css']
  13. })
  14. export class ListComponent implements OnInit {
  15. /* 变量定义 */
  16. data:object[] = [];/* 定义列表数据变量 */
  17.  
  18. /* 构造方法,做依赖注入 */
  19. constructor(
  20. // private _httpService: Http,
  21. private route: ActivatedRoute,
  22. private _userServiceService: UserServiceService
  23. ) {
  24.  
  25. }
  26.  
  27. /* 加载完事件,做初始化 */
  28. ngOnInit() {
  29. // this._httpService.get('http://localhost:3003/news').subscribe(values => {
  30. // console.log(values);
  31. // this.data = values.json();
  32. // });
  33. this._userServiceService.getGundams().then(gundams => this.data = gundams.slice(0, 3)); // 让主页只显示3个
  34. }
  35.  
  36. }

备注:

Error: ELOOP: too many symbolic links encountered……
ELOOP: too many symbolic links encountered, stat ……

六、运行效果,可正常请求到数据。

解决方案

删除node_modules文件夹, 重新npm install,不能用cnpm

Angular5学习笔记 - 创建服务(九)的更多相关文章

  1. Angular5学习笔记 - 创建组件(四)

    一.创建组件 ng generate component component-name #简写 ng g c component-name ng generate directive|pipe|ser ...

  2. Angular5学习笔记 - 创建、运行、发布项目(一)

    一.安装脚手架 npm install -g cnpm --registry=https://registry.npm.taobao.org #安装阿里镜像 npm install -g @angul ...

  3. uCOS-II的学习笔记(共九期)和例子(共六个)

    源:uCOS-II的学习笔记(共九期)和例子(共六个) 第一篇 :学习UCOS前的准备工作http://blog.sina.com.cn/s/blog_98ee3a930100w0eu.html 第二 ...

  4. 【Unity Shaders】学习笔记——SurfaceShader(九)Cubemap

    [Unity Shaders]学习笔记——SurfaceShader(九)Cubemap 如果你想从零开始学习Unity Shader,那么你可以看看本系列的文章入门,你只需要稍微有点编程的概念就可以 ...

  5. SpringCloud学习笔记:服务支撑组件

    SpringCloud学习笔记:服务支撑组件 服务支撑组件 在微服务的演进过程中,为了最大化利用微服务的优势,保障系统的高可用性,需要通过一些服务支撑组件来协助服务间有效的协作.各个服务支撑组件的原理 ...

  6. 【转】 Pro Android学习笔记(六九):HTTP服务(3):HTTP POST MultiPart

    目录(?)[-] 建立测试环境 开发环境导入第三方JAR HTTP Post Multipart小例子 HTTP POST不仅可以通过键值对传递参数,还可以携带更为复杂的参数,例如文件.HTTP Po ...

  7. Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示

    CRM的项目,审批流是一个必须品.为了更方便灵活地使用.配置审批流,我们自定义了一整套审批流.首先来看下它的效果: 1. 审批模板 这是一个最简单的审批流,首先指定审批实体,及相关字段,再配置流程节点 ...

  8. Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)

    刚学没多久,作了一个小项目APP,微信企业号开发与微信服务号的开发,使用的是AngularJS开发,目前项目1.0版本已经完结,但是项目纯粹为了赶工,并没有发挥AngularJS的最大作用,这几天项目 ...

  9. Apache OFBiz 学习笔记 之 服务引擎 二

    加载服务定义文件   ofbiz-component.xml:所有的服务定义文件在每个组件的ofbi-component.xml文件中   加载服务定义 例:framework/common/ofbi ...

随机推荐

  1. R的几个基础函数

    本章目录: 1.路径和文件 2.数据转换 3.获得帮助 路径和文件: 1.工作路径: 显示当前路径:getwd() 设置路径:setwd(“绝对路径”) 2.目录: 创建目录:dir.create(& ...

  2. collectionView的案例

    #import "ViewController.h" #import "CollectionViewCell.h" @interface ViewControl ...

  3. sql 数据库中只靠一个数据,查询到所在表和列名

    有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的.只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名. 前提是要将 ...

  4. Spark总结1

    安装jdk 下载spark安装包 解压 重点来了: 配置 spark: 进入 conf   ----> spark-env.sh.template文件 cd conf/ mv spark-env ...

  5. 【P2514】工厂选址(贪心)

    看到题了不首先应该看看数据范围确定一下算法么,这个题的数据范围大约可以支持到O(nmlogm),所以肯定不是搜索什么的,DP貌似至少也要n^2m,所以可以想一些其他的.对于题目的输入,我们发现这些输入 ...

  6. <转载>Win x86-64 - Download & execute (Generator)

    #Title: Obfuscated Shellcode Windows x86/x64 Download And Execute [Use PowerShell] - Generator #leng ...

  7. 使用标签代替goto关键字

    众所周知,java中没有goto语句,但是保留了goto这个关键字.由于goto是在源码级上的跳转,多次使用goto会引起代码混乱容易出错,这也是java取消goto语句的目的所在,但是goto语句也 ...

  8. Codeforces Round #280 (Div. 2) A , B , C

    A. Vanya and Cubes time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  9. Java编程思想 Random(47)

    Random类包含两个构造方法,下面依次进行介绍:1. public Random()该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象.2. ...

  10. CDN,内容分发网络。

    CDN,内容分发网络. 就近获取内容,提高用户访问网站响应速度. 广州的用户,访问广州的节点.北京的用户,访问北京的节点. 图片CDN,提高图片访问,方便数据迁移. DNS,域名系统.处理域名和IP地 ...