素材巴巴 > 程序开发 >

angular十天急速入门开发必备,迅速上手企业级项目(二)(依赖注入)

程序开发 2023-09-22 15:40:43

依赖注入

组件内声明

在这里插入图片描述

根组件内声明

在这里插入图片描述

在服务本身的@injectable()装饰器中

在这里插入图片描述

Mutil

表示一个令牌对应多个拦截器

提供不同于令牌(privider)的类

New出来的类是Demo2Service

在这里插入图片描述

别名提供者

useExisting指向的服务一定是已经注册过的,这是和useClass的区别之一
在这里插入图片描述

值提供值

在这里插入图片描述

普通提供者

在这里插入图片描述

injectToken

在这里插入图片描述
在这里插入图片描述

工厂提供者

在这里插入图片描述
在这里插入图片描述

依赖于其它服务

在这里插入图片描述

服务查找规则(找完components找module)

  1. 优先查找ElementInjector,如果当前组件找不到提供者,将会去父组件中的ElementInjector
  2. 当所有的ElementInjector都找不到,就会去ModuleInjector中找
  3. 如果ModuleInjector也找不到,就会抛出一个错误
  4. 对于同名的令牌,只会解析遇到的第一个依赖

跳过自身

在这里插入图片描述

只在自身找

在这里插入图片描述
在这里插入图片描述

在宿主上找(本级selctor)

在这里插入图片描述

指定module的注入

在这里插入图片描述
谁引入了这个module谁就可以用这个service,如果在该模块内部使用则会包一个循环依赖的错误

自定义依赖提供

https://angular.cn/guide/dependency-injection-in-action#supply-a-custom-provider-with-inject
在这里插入图片描述

Observable和subject的区别

  1. subject和obserbable的区别是subject会把observer放进数组
  2. Subject是先添加订阅者,Observable是后添加订阅者
  3. Subject可以添加多个订阅者,Observable只能添加一个
  4. Subject可以结束流,Observable不行
    在这里插入图片描述

Observable

Observable相当于promise
调用subscribe函数会将该函数内部的有next的对象当做参数传给serquenceSubscriber

在这里插入图片描述
Observable需要传入一个函数作为参数,该函数需要一个有next方法的对象作为参数,而subscribe的作用就是将该参数传递给test

在这里插入图片描述

Subject

Subject[next,complete,asObservable] > observable[subscribe,pipe]
本质其实是通过subscribe方法将所有的next函数放一个数组,

Subscribe(继承)

接收一个observer对象,该obserber对象包含next函数
在这里插入图片描述

Next(新增)

将参数传给observer的next函数

complete(新增)

用来结束流,结束前要调用next先
在这里插入图片描述

取消订阅

Unsubscribe(),该函数来源于subscribe的返回值Subscription

在这里插入图片描述在这里插入图片描述

BehaviorSubject

与subject的区别:

  1. BehaviorSubject要有初始值
  2. BehaviorSubject由于有初始值所以无需先传值,再有回调,而Subject必须先有回调,再传值

标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。