Angular2快速入门-4.创建一个服务(创建NewsService提供数据)
2024-09-14 15:17:00
上篇我们使用的数据是通过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. 了解箭头函数的使用
最终程序下载 点击下载
最新文章
- php实现设计模式之 备忘录模式
- javascript基础07
- Knockout.Js官网学习(click绑定)
- xml<;>;编译
- SQL技术内幕二DDL
- 0基础学习ios开发笔记第二天
- php开发学习目录
- SQLSERVER一个比较不错的分页存储过程p_splitpage
- c#常见stream操作
- DataInputStream类readLong()引起的思考
- 解决IE下Ajax请求无效
- Unity C# 多态 委托 事件 匿名委托 Lambda表达式 观察者模式 .NET 框架中的委托和事件
- springmvc复习笔记----springmvc姓名年龄例子:RequestParam 试水
- 初始Hbase
- linux C守护进程编写
- [Go] 如何正确地 抛出 错误 和 异常(error/panic/recover)?
- 关于gcc编译器中函数不用进行原型声明的解释
- UGUI实现不规则区域点击响应
- 转:MyISAM 和 InnoDB 讲解
- js中常用的字符串方法