1.高阶话题:服务对象的作用范围

声明服务提供者的方式:

方式1:在根模块中提供服务对象-----在整个应用中服务是单例

@Injectable({ providedIn:'root' })

export class TimerService{    }

方式2:在组件中提供服务对象----在每个组件实例中服务都是有一个实例的

@Injectable()

export class TimerService{    }

----------------------------------------

@Component({

.....

providers:{ TimerService }

})

export class LoginComponent{       }

注意:项目中只要服务对象中有属性,只能用方式2;否则推荐使用方式1

2. 面试严重加分项:TypeScript

Angular从V2.x开始使用TS编写;Vue.js从V3开始使用TS编写;

中文网:http://www.tslang.cn

TS是由微软编写的一门基于JS又高于JS的编程语言。

浏览器不支持TS,其使用步骤:

1.下载TS的编译器

npm i -g typescript

2.编写.ts文件,使用编译器转化为.js

tsc  hello.ts

//得到hello.js

TS学习手册:

https://www.tslang.cn/docs/handbook/basic-types.html

TS的扩展特性:

1.TS是强类型语言 ------JS是弱类型语言

强类型语言的特点:变量、形参、函数都要声明类型

uname:string

f1( n1:number ):boolean{

return true

}

常用的数据类型关键字:string/number/boolean/any/number[]/Object/Date/void

2.TS对属性和方法成员定义三种访问修饰符:

private:私有的,私有成员只能在本类内部使用

protected:被保护的,被保护的成员只能在本类内部及子类内部使用

public:公共的,公共成员可以在本类内部以及外部使用

提示:一般情况下,class内属性不应该让外界随便访问,通常设置为private;

方法一般允许调用的,通常设置为public

3.访问修饰符的特殊用法

下述两种用法的作用相同

1. class Emp{

private    age:number

constructor( age ){

this.age =age

}

}

2. class  Emp{

constructor( private age:number ){

}

}

4.面向对象编程-------class(类)和interface(接口)

interface:接口,是一种特殊的类,规范“要求某个class必须具备XXX方法”,如管道里

必须提供transform方法

interface Runnable {

start()            //接口中的方法没有主体!

stop()

}

----------------------------------------------------

class  Car   implements Runnable {

start(){}        //接口的实现者必须提供指定的方法,要有主体

stop(){}

.......

}

5.装饰器

见手册 https://www.tslang.cn/docs/handbook/decorators.html

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

工具名                                               本质                                                                        优劣势

原生XHR                            let xhr =new XHRHttpRequest()             浏览器支持的原生技术;基于回调方式处理响应

JQuery.ajax()                     也是XHR,只是进一步的封装而已              比原生要简单;基于回调方式处理响应;

Axios                                 也是XHR,只是进一步的封装而已              比原生要简单;基于Promise处理响应;可以                                                                                                               排队、并发、撤销;

NG HttpClient                    也是XHR,只是进一步的封装而已             比原生要简单;基于“观察者模式”处理响                                                                                                                 应;可以排队、并发、撤销

Fetch                                  不再是XHR,是W3C提出的新技术,         比XHR从根本上就更加先进;天然基于                                                       有望取代XHR                                           Promise;目前浏览器还有兼容性问题

"马走日象走田"             ------------------"双炮枪"组合连招

JS类/接口/原型            ------------------设计模式(23+1中)    JavaScript设计模式(书)

23中设计模式之一:观察者模式的原理:

Observable:可被关注的对象,在未来某个不确定的时间点可能抛出特定的事件。

Subscribe:订阅,建立与可被关注的对象的契约,一旦得到新消息立即会被通知到

3.Angular官方提供的服务对象-------------httpclient

HttpClient服务:是Angular提供的用于发起异步XHR请求对象

使用步骤:

1.在主模块中导入HttpClientModule模块

//app.module.ts

imports:[ BrowserModule,HttpClientModule]

2.在组件中声明依赖于HttpClient服务对象,就会被自动注入进来

constructor(private http:HttpClient){}

3.调用HttpClient实例实现异步请求

this.http.get( url ).subscribe( (res)=>{ })

4.面试题:组件的生命周期钩子函数

手册地址:https://angular.cn/guide/lifecycle-hooks

Angular中的组件的生命周期钩子函数调用顺序:

(0)constructor()                组件对象被创建了

(1)ngOnChanges()            组件绑定的属性值发生改变

(2)ngOnInit()                     组件初始化完毕-------等同于Vue.js的mounted

(3)ngDoCheck()                 组件检查到了系统对自己的影响

(4)ngAfterContentInit()     组件的内容初始化完成

(5)ngAfterContentChecked()    组件的内容发生变化需要检查

<myc01><p>{{uname}}</p></myc01>

(6)ngAfterViewInit()             组件的视图初始化完成

(7)ngAfterViewChecked()     组件的视图发生变化需要检查

template:'<p>{{uname}}</p>'

(8)ngOnDestroy()                 组件即将从DOM树上卸载,适合执行一些资源释放性语句

,例如:定时销毁....

*ng="false"

Angular 服务对象的作用范围的更多相关文章

  1. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...

  2. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  3. Nodejs之MEAN栈开发(五)---- Angular入门与页面改造

    这个系列一共会涉及两个JavaScript框架的讲解,一个是Express用做后端,一个是Angular用于前端.和Express一样,Angular分离内容,处理视图.数据和逻辑.和MVC模式很相似 ...

  4. Angular 基础入门

    简介 什么是AngularJS 一个功能非常完备的前端框架,通过增强HTML的方式提供一种便捷开发Web应用程序的方式 其核心特点就是几乎无任何DOM操作,让开发人员的精力和时间全部集中于业务 MVC ...

  5. 走进AngularJs(一)angular基本概念的认识与实战

    一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维 ...

  6. Angular.JS学习笔记——1

    内容来自:http://www.runoob.com/angularjs/angularjs-intro.html AngularJS 是一个 JavaScript 框架.它是一个以 JavaScri ...

  7. angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)

    昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...

  8. angular源码分析:angular中的依赖注入式如何实现的

    一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...

  9. Angular JS 学习之 Scope作用域

    1.Scope作用域是应用在HTML(视图)和JavaScript(控制器)之间的纽带: Scope是一个对象,有可用的方法和属性: Scope可应用在视图和控制器上: 2.当你在AngularJS中 ...

随机推荐

  1. 2019-2020-1 20199328《Linux内核原理与分析》第三周作业

    加载内核 这里可以看出有些东西隔一段时间就会打印出来 查看mymain.c 开头的一些语句不再描述 每10000次循环打印一次 这里还是针对的mymain.c文件,这里我们可以根据自己的计算机对频率进 ...

  2. 霍夫变换(Hough Transform)

    霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 我们先看这样一个问题: 设已知一黑白图像上画了一条直线,要求出这 ...

  3. android自定义View&自定义ViewGroup(上)

    一般自定义view需要重写的方法 void onMeasure(int widthMeasureSpec, int heightMeasureSpec) void onSizeChanged(int ...

  4. 解决vue中BMap未定义问题

    原文链接: 点我 最近在项目中使用了百度地图来显示物流信息,实现方式有两种: 引用Vue Baidu Map引用BMap存在的问题:\color{red}{存在的问题:}存在的问题::使用BMap可以 ...

  5. 图论-欧拉图-欧拉回路-Euler-Fluery-Hierholzer-逐步插入回路法-DFS详解-并查集

    欧拉图性质: 1.无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数): 2.无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点: 3.有向连通图D是欧拉图,当且仅当该图 ...

  6. python(类多态)

    一.多态 (以封装和继承为前提)不同的子类调用相同的方法,产生不同的结果 class Dog(): def __init__(self,name): self.name = name def game ...

  7. undef用法

    #undef的语法 定义:#undef 标识符,用来将前面定义的宏标识符取消定义. 整理了如下几种#undef的常见用法. 1. 防止宏定义冲突在一个程序块中用完宏定义后,为防止后面标识符冲突需要取消 ...

  8. MySQL导出数据到文件中的方法

    MySQL导出数据到文件中的方法 1.导出数据到txt文件中实例:把数据表studscoreinfo中所有数据导出到指定的位置方法:select * from 表名 into outfile 指定导出 ...

  9. SpringBoot上传文件大小限制

    SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSize ...

  10. INotifyPropertyChanged接口

    INotifyPropertyChanged 接口用于通知客户端,通常执行绑定的客户端,属性值已更改. 例如,考虑 Person 具有一个名为属性对象 FirstName. 若要提供通用的属性更改通知 ...