一、创建服务

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

二、效果

三、开发服务

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

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/toPromise'; @Injectable()
export class UserServiceService {
private api = 'http://localhost:3003'; // 服务器地址
private gundamList = '/news'; // 获取全部
private getGundam = '/detail'; // 获取明细 constructor(private http: Http) { }
// 获得全部数据
getGundams(): Promise<any[]> {
return this.http.get(this.api + this.gundamList)
.toPromise()
.then(response => response.json())
.catch(this.handleError);
} // 根据Id查询高达
getGundamById(id: number): Promise<object> {
console.log(this.api + this.getGundam + '?id=' + id);
return this.http.get(this.api + this.getGundam + '?id=' + id)
.toPromise()
.then( response => response.json())
.catch(this.handleError);
} private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
}

四、全局注册服务

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

import {UserServiceService} from './services/user-service.service';

  /* 注册服务 */
providers: [UserServiceService],

五、使用服务

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

import {Component, OnInit} from '@angular/core';
/*import { Http } from '@angular/http'; 添加Http请求模块 */
import {UserServiceService} from '../../../services/user-service.service';
import {
ActivatedRoute,
Params
} from '@angular/router'; @Component({
selector: 'app-list',
templateUrl: './list.component.html',
styleUrls: ['./list.component.css']
})
export class ListComponent implements OnInit {
/* 变量定义 */
data:object[] = [];/* 定义列表数据变量 */ /* 构造方法,做依赖注入 */
constructor(
// private _httpService: Http,
private route: ActivatedRoute,
private _userServiceService: UserServiceService
) { } /* 加载完事件,做初始化 */
ngOnInit() {
// this._httpService.get('http://localhost:3003/news').subscribe(values => {
// console.log(values);
// this.data = values.json();
// });
this._userServiceService.getGundams().then(gundams => this.data = gundams.slice(0, 3)); // 让主页只显示3个
} }

备注:

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. C++学习 之pair

    Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的 ...

  2. 20145231《Java程序设计》第四次实验报告

    实验四 Android开发基础 实验内容 •安装Android Studio •运行安卓AVD模拟器 •使用Android运行出模拟手机并显示自己的学号 实验步骤 一.安装Android Studio ...

  3. debian内核代码执行流程(三)

    接续<debian内核代码执行流程(二)>未完成部分 下面这行输出信息是启动udevd进程产生的输出信息: [ ]: starting version 175是udevd的版本号. 根据& ...

  4. Vue.js学习笔记 第三篇 条件渲染

    条件选择 条件选择的用法和其他语言类似,一个例子就能解决所有问题 <!DOCTYPE html> <html> <head> <meta charset=&q ...

  5. K8s ipvs mode kube-proxy

    IPVS vs. IPTABLES IPVS模式在Kubernetes 1.8中被引入,在1.9中进入beta测试. IPTABLES模式在1.1版本中被添加进来,在1.2开始就变成了默认的操作模式. ...

  6. MVC6 (ASP.NET5) 自定义TagHelper

    1) 在 _ViewImports.cshtml 中引入TagHelper类所在的 Assembly . (注意不是namespace)  : @addTagHelper "*, WebAp ...

  7. [转载]Google Android开发精华教程

    原文地址:Android开发精华教程">Google Android开发精华教程作者:huiyi8zai Android是Google于2007年11月5日宣布的基于Linux平台的开 ...

  8. JavaWeb -- 自定义标签实例, 防盗链, JSTL 核心标签

    1. 自定义标签应用实例1: 防盗链 标签处理类 public class RefererTag extends SimpleTagSupport { private String site; pri ...

  9. Eclipse下利用Maven创建SpringBoot的Restful风格程序

    参考文章:https://spring.io/guides/gs/rest-service/ 中文翻译:https://blog.dubby.cn/detail.html?id=9040 1.目标是什 ...

  10. ThreadPool(线程池)

    WPF使用ThreadPool.QueueUserWorkItem线程池防界面假死 时间:2012-01-09 20:44来源:http://luacloud.com 作者:luacloud 点击:1 ...