Filter:过滤器,用于在view中呈现数据时显示为另一种格式;过滤器的本质是一个函数,接收原始数据转换为新的格式进行输出:

function(oldVal){ ... return newVal }

使用过滤器:{{ e.salary  | 过滤器名 }}

Angular2.x中,过滤器更名为  “管道(Pipe)”

自定义管道的步骤:

1.创建管道class,实现转换功能

@Pipe({ name:'sex' })

export class SexPipe{

transform(val){ return ....}

}

2.在模块中注册管道

//app.module.ts

declarations:[ SexPipe ]

3.在模板视图中使用管道

{{e.empSex | sex}}

<p [title]="empSex | sex"></p>

说明:管道的transform方法除了val还可以接受其他参数,

调用管道时用冒号为这些参数赋值,例如:{{e.empSex | sex:'en' }}

创建管道对象的简便工具: ng  g  pipe  管道名

Vue.js中没有预定义管道;Angular提供了几个预定义管道:

1.lowercase:转换为小写

{{ename | lowercase }}

2.uppercase:转换为大写

{{ename | uppercase }}

3.titlecase:转换为首字母大写

{{ename | titlecase }}

4.slice:只显示字符串的一部分

{{ename | slice : 0 : 3 }}

5.json:将JS对象序列化为JSON字符串

{{obj | json }}

6.number:把数字转换为具有指定整数位和小数位的字符串

{{num | number }}

{{num | number:'4.1 -4 '}}

7.currency:把数字转换为货币格式字符串:货币符号+三位一逗号+两位小数位

{{num | currency }}

{{num | currency:'¥' }}

8.date:把数字转换为日期字符串

{{num | date:'yyyy-MM-dd HH:mm:ss' }}

2.创建对象的两种方式

方式一:手工创建式  --------自己创建:let  c2 = new  Car()

 方式二:依赖注入   ---------无需自己new,只需要声明依赖;

服务提供者就会创建被依赖的对象,注入给服务需要者。

3.Angular核心概念之六  -----服务和依赖注入-----抽象&重点!

Service:服务,Aangular认为:组件是与用户交互的一种对象,其中的内容都应该

与用户操作有关系的;而与用户操作无关的内容都应该剥离出去,放在“服务对象”中,

为组件服务;例如日志记录、计时统计、数据服务器访问.....

创建服务对象的步骤:

1.创建服务对象并指定服务提供者

@Injectable({ providedIn:'root' })

export class LogService{    }

 2.在组件中声明依赖,服务提供者就会自动注入进来,组件直接使用服务对象即可。

export class XxComponent{

constructor(log:LogService){

//此处的log变量就会被注入为LogService实例

}

}

面试题:前端有哪些异步请求工具?各自的利弊?

1.原生的XHR

2.jQuery.ajax()

3.Axios

4.Angular     HttpClient

5.Fetch

使用服务对象时(依赖注入)常见错误:

ERROR NullInjectorError: StaticInjectorError(AppModule)[Myc03Component -> LogService]:
StaticInjectorError(Platform: core)[Myc03Component -> LogService]:
NullInjectorError: No provider for LogService!

指定的服务对象没有服务提供者;

解决方案:

1.保证创建服务对象时指定providedIn:'root'

2.组件声明依赖时服务对象不能写错

4.使用Angular官方提供的服务对象-----HttpClient  Service

HttpClient服务对象用于指定的URL发起异步请求,使用步骤:

1.在主模块中导入HttpClient服务所在的模块

//app.module.ts

imports:[ BrowserModule,FormsModule,HttpClientModule ]

2.在需要使用异步请求的组件中声明依赖于HttpClient服务对象,就可以使用该对象发起

异步请求了。

http = null

constructor( http:HttpClient ){

this.http =http

}

Angular核心概念之五---过滤器的更多相关文章

  1. Angular核心概念

    一.集成开发环境@angular/cli IE8之后才有debugger工具 2009,nodejs发布,前端Big Bang 1.1 基于NodeJS的工具链 打包工具 grunt 对js代码做合并 ...

  2. Angular 核心概念

    module(模块) 作用 通过模块对页面进行业务上的划分,根据不同的功能划分不同的模块. 将重复使用的指令或者过滤器之类的代码做成模块,方便复用 注意必须指定第二个参数,否则变成找到已经定义的模块 ...

  3. Angular 核心概念2

    自定义指令 指令增强了 HTML,提供额外的功能 内置的指令基本上已经可以满足我们的绝大多数需要了 少数情况下我们有一些特殊的需要,可以通过自定义指令的方式实现 普通指令 语法 <div hel ...

  4. 2 Angular 2 的核心概念

    一.组件(Components): 组件是构成 Angular 应用的基础和核心,它是一个模板的控制类,用于处理应用和逻辑页面的视图部分.组件知道如何渲染自己及配置依赖注入,并通过一些由属性和方法组成 ...

  5. Angularjs -- 核心概念

     angularjs旨在减轻使用AJAX开发应用程序的复杂度,使得程序的创建.測试.扩展和维护变得easy.以下是angularjs中的一些核心概念. 1. client模板      多页面的应用通 ...

  6. 第214天:Angular 基础概念

    一.Angular 简介 1. 什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多 ...

  7. Spring 核心概念

    Spring 核心概念 引言 本文主要介绍 Spring 源码中使用到的一些核心类 1. BeanDefinition BeanDefinition表示Bean定义,BeanDefinition 中存 ...

  8. 领域驱动设计(DDD)部分核心概念的个人理解

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  9. Javascript本质第一篇:核心概念

    很多人在使用Javascript之前都至少使用过C++.C#或Java,面向对象的编程思想已经根深蒂固,恰好Javascript在语法上借鉴了Java,虽然方便了Javascript的入门,但要深入理 ...

随机推荐

  1. 文件读取的时候要留意 -- 序列化serialize()与反序列化unserialize():

    原文:https://blog.csdn.net/little_rabbit_baby/article/details/53840543 序列化serialize()与反序列化unserialize( ...

  2. 关于vagrant环境下项目中图片缓存的问题

    之前用的是iis所以可能没有这些问题,后来换了nginx之后发现图片缓存问题很严重,本项目用的是thinkphp5框架:浏览器.runtime.session.cookie.加参数,后台,所有缓存都清 ...

  3. 关于暴力破解的一些学习笔记(pikachu)

    这几天的笔记都懒得发博客都写在本地了,随缘搬上来 什么是暴力破解 就是在攻击者不知道目标账号密码情况下的,对目标系统的常识性登陆 一般会采用一些工具+特定的字典 来实现高效的连续的尝试性登陆 一个有效 ...

  4. awk命令及随机数的产生

    3.sed 操作,将文件第9行至第15行的数据复制到第十六行 sed -i  '9,15H;16G' 文件 4.用awk获取文件中的三行的倒数第二列字段 awk -F":" 'NR ...

  5. poj_1323 Game Prediction 贪心

    Game Prediction Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11814   Accepted: 5701 ...

  6. Linux运维面试题:请简要说明Linux系统在目标板上的启动过程?

    Linux运维面试题:请简要说明Linux系统在目标板上的启动过程? 该问题是Linux运维面试最常见的问题之一,问题答案如下: 1.用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备( ...

  7. 如何使用badboy录制一个脚本并成功的导入jmeter中?

    前言: 虽然,很多人已经不适用这种方式进行录制脚本了,因为不好维护.但是,还是有一些朋友在刚开始学习的过程中使用badboy. 可能有人会好奇了,人家五一都出去玩了,你在家学习吗?正巧前一阵有粉丝留言 ...

  8. Java实现通过反射获取指定类的所有信息

    package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...

  9. B. Phoenix and Beauty(贪心构造)

    \(给定序列长n的数组和k.完美数组的定义是数组中每一个连续k项的子段和为定值\) \(现在要求插入一些数使得数组满足条件,输出你构造的新数列.\) \(\color{Red}{----------- ...

  10. E. Reachability from the Capital dfs暴力

    E. Reachability from the Capital 这个题目就是给你一个有向图,给你起点,问增加多少条边让这个图变成一个连通图. 这个因为n只有5000m只有5000 所以可以暴力枚举这 ...