上篇我们使用的数据是通过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. 了解箭头函数的使用

最终程序下载  点击下载

最新文章

  1. php实现设计模式之 备忘录模式
  2. javascript基础07
  3. Knockout.Js官网学习(click绑定)
  4. xml<>编译
  5. SQL技术内幕二DDL
  6. 0基础学习ios开发笔记第二天
  7. php开发学习目录
  8. SQLSERVER一个比较不错的分页存储过程p_splitpage
  9. c#常见stream操作
  10. DataInputStream类readLong()引起的思考
  11. 解决IE下Ajax请求无效
  12. Unity C# 多态 委托 事件 匿名委托 Lambda表达式 观察者模式 .NET 框架中的委托和事件
  13. springmvc复习笔记----springmvc姓名年龄例子:RequestParam 试水
  14. 初始Hbase
  15. linux C守护进程编写
  16. [Go] 如何正确地 抛出 错误 和 异常(error/panic/recover)?
  17. 关于gcc编译器中函数不用进行原型声明的解释
  18. UGUI实现不规则区域点击响应
  19. 转:MyISAM 和 InnoDB 讲解
  20. js中常用的字符串方法

热门文章

  1. Linux下保存文件
  2. 目标跟踪算法meanshift优缺点
  3. 敏捷BI与数据驱动机制
  4. [Python] dict字典排序和多条件排序
  5. NSStringFromSelector(_cmd)和self
  6. ibatis 参数类型为map,map里面有list
  7. 【pandas】生日转年龄
  8. php序号发生器,数字重组,可以隐藏原来的1,2,3。。。
  9. LOJ2421 NOIP2015 信息传递 【tarjan求最小环】
  10. BZOJ3730 震波 【动态点分治】*