上篇我们使用的数据是通过mock-news.ts中的const News[] 数组直接赋给Component 组件的,这篇我们把提供数据的部分单独封装成服务

第一、创建news.service.ts

import { Injectable } from "@angular/core";
import { News } from './news';
import { NewList } from './mock-news'; @Injectable()
export class NewsService {
getNews() {
return Promise.resolve(NewList) ;
}
}

 装饰器@Injectable()代表该服务会在程序启动时候自动注入Component的组件中,后面会讲解怎么注入。

我们在类NewsService中增加了一个方法 getNews方法,该方法返回一个Promise 承诺,它是一种异步技术,防止页面请求的时候线程阻塞,你可以把它理解成,当有数据的时候,会自动推送给你,

第二、修改newslist.component

import { Component, OnInit } from '@angular/core';
import { News } from './news';
import { NewList } from './mock-news';
import { NewsService } from './news.service'; @Component({
selector:'news',
templateUrl:'./newslist.component.html',
styleUrls:['./newslist.component.css'],
providers: [NewsService]
}) export class NewsListComponent implements OnInit { newlist:News[];
selectedNew:News;
onSelected(n:News):void{
this.selectedNew=n;
} constructor(private newsService:NewsService){};
getNews():void{
this.newsService.getNews().then(newlist=>this.newlist=newlist);
} ngOnInit():void{
this.getNews();
}
}

在该类中我们做了三处修改

1. 导入服务NewsService,通常服务都是.service.ts后缀,约定。

2. 在providers中增加 NewsService,

3. 集成 OnInit ,增加Angular2的初始化ngOnInit,主要目的是重新设置自己的属性newlist

4.注意构造函数constructor,服务在这里DI进来。

第三、总结

命令行 npm start,程序可以work了,

我们需要注意的几个点,

1. 服务写好后,需要在Component中 导入到 Providers

2. 集成OnInit的时候注意 import { OnInit } from '@angular/core';

3. 注意Promise的写法,只有返回时Promise的对象的时候,才可以使用then 后续处理

4. 了解箭头函数的使用

最终程序下载  点击下载

Angular2快速入门-4.创建一个服务(创建NewsService提供数据)的更多相关文章

  1. Angular2快速入门-3.多个组件(分离新闻列表页和详细页)

    上篇(Angular2快速入门-2.创建一个新闻列表)已经完成新闻列表的展示,并且点击新闻列表的时候,下面可以展示出新闻的详细信息,这节我们把新闻详细和新闻列表页面分离出来 新闻详细单独一个compo ...

  2. Angular2快速入门-5.使用http(新闻数据来自http请求)

    Angular2官网通过http请求模拟API 来请求hero 数据,感觉有点繁琐,很让人理解不了,我们不采用它的办法,直接展示怎么使用http请求来获取我们的数据 ,直截了当. 第一.准备工作,创建 ...

  3. Angular2快速入门-2.创建一个新闻列表

    背景: 我们想通过一个例子,展示下Angular2 怎么绑定页面,怎么创建Component, 例子:我们创建一个新闻列表,当点击新闻列表中某一条新闻的时候,展示出该条新闻的详细信息, 在详细信息中可 ...

  4. Maven快速入门(二)手动创建maven项目hellomaven

    之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...

  5. SpringCloud学习6-如何创建一个服务消费者consumer

    上一节如何创建一个服务提供者provider已经启动了一个provider的server,提供用户信息查询接口.接下来,我们启动另一个provider,由于是同一台机器本地测试,我们换一个端口 --s ...

  6. springboot创建一个服务,向eureka中注册,使用swagger2进行服务管理

    首先pom.xml文件,spring boot.springcloud版本很麻烦,容易出问题 <?xml version="1.0" encoding="UTF-8 ...

  7. JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)

    接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...

  8. Servlet快速入门:第一个Servlet程序

    Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口.用于处理客户端发来的请求并作出响应.通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息 ...

  9. SpringBoot框架:快速入门搭建运行一个应用程序(一)

    一.环境配置 Java环境:1.8版本 开发工具:IntelliJ IDEA 二.简单应用 1.创建项目 选择创建的项目类型为Spring Initializr,Project SDK选择1.8版本的 ...

  10. 创建一个实例&创建一个线程。。

    using System; using System.Threading; namespace WorkerThread02 { class ThreadTest { bool done; stati ...

随机推荐

  1. ETL学习整理 PostgreSQL

    ETL分别是“Extract”.“ Transform” .“Load”三个单词的首字母缩写也就是“抽取”.“转换”.“装载”,但我们日常往往简称其为数据抽取. ETL是BI/DW(商务智能/数据仓库 ...

  2. linux和windows双系统设置默认启动系统

    1.以root身份登录linux系统: 2.启动终端,输入命令:vi /boot/grub/grub.conf,文件内容如下: #boot=/dev/sda default=0 (默认启动哪个系统的设 ...

  3. React-Native基础_3.Flex布局

    Flex布局介绍 /** * Sample React Native App * https://github.com/facebook/react-native * @flow */ 'use st ...

  4. height 与 min-height 的继承

    min-height: inherit; 继承父元素的 min-height: 80px; 但,不能继承父元素的 height: 200px; height: inherit; 能继承父元素的: he ...

  5. "PEP:8 expected 2 blank lines ,found 1"

    pycharm shows "PEP:8 expected 2 blank lines ,found 1" 用pycharm写python的时候,总会在def function() ...

  6. js之自定义右键菜单

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 使用stsadm.exe工具实现SharePoint网站备份还原

    一.过程描述: 首先在源站点机器上用stsadm.exe备份网站集,讲备份文件拷贝到目标服务器(也可直接在备份时配置备份路径为目标机器路径),然后执行还原操作:首先新建网站集,然后用SharePoin ...

  8. Could not transfer artifact org.springframework:spring-tx:jar:3.2.3.RELEASE

    在maven中加入依赖时,如果jar下载失败,这时pom文件中就会出现上面的错误,重新添加也不好用, 这时要手动去maven库中删除已经下载的依赖包. 默认库位置:C:\Users\XXX\.m2

  9. pid参数调节的几句话

    如果参数上升太快,降低Kp值,如果震荡太剧烈(振荡幅度过大),降低Ki值,如果曲线震荡部分上升下降太快则尝试调整Kd值.

  10. $x \rightarrow \infty$时多项式型函数的极限

    \[ \lim_{x \rightarrow \infty} \frac{\sqrt{4x^6-5x^5}-2x^3}{\sqrt[3]{27x^6+8x}} \\ =\lim_{x \rightar ...