创建service服务,用来把数据存取的逻辑从组件当中剥离出来。

home下创建services文件夹
4-14 依赖注入(2)

在创建index.ts

4-14 依赖注入(2)

创建home.service

4-14 依赖注入(2)
把home.service导出
4-14 依赖注入(2)

快捷键生成service类

4-14 依赖注入(2)

4-14 依赖注入(2)
在模板这里输入Home。模板帮我们加了注解@Injectable()
4-14 依赖注入(2)
我们把之前写的ts的数据赋值过来
4-14 依赖注入(2)
注入homeService
4-14 依赖注入(2)
topMenu还是这个类型。只不过现在是一个空的数组。
4-14 依赖注入(2)
调用service的方法。获取getTabs返回的数据
4-14 依赖注入(2)

4-14 依赖注入(2)

getChannels方法
4-14 依赖注入(2)

都设置为空数组,从service中获取数据
4-14 依赖注入(2)
构造函数注入
4-14 依赖注入(2)

ngInit方法内赋值
4-14 依赖注入(2)

注意一定要Providers

4-14 依赖注入(2)

页面效果不变。
4-14 依赖注入(2)
依赖注入的好处 让彼此耦合性降低了。

不是具体的类,而是一个配置的注入或者是一个值

把某一个api的url当做一个值传递过去。

4-14 依赖注入(2)
在下面输出
4-14 依赖注入(2)
虽然是获取到了。但是这里有一个警告
4-14 依赖注入(2)
为了避免起名的冲突。我们使用InjectionToken生成一个token
4-14 依赖注入(2)
创建了一个const常量 token 使用 InjectionToken。这样angular在引用的时候会处理 ,避免冲突。
4-14 依赖注入(2)
这样把token当做是唯一辨识
4-14 依赖注入(2)
把这个token粘贴出来
4-14 依赖注入(2)
放在这里导出出去
4-14 依赖注入(2)

providers配置token

4-14 依赖注入(2)

angular6开始有的特性

实际services可以不在provider里面声明
4-14 依赖注入(2)
一般服务注册到应用的根
4-14 依赖注入(2)
这样写的好处,如果有多个服务在providers声明出来。别人去import我们的module。注入的这些服务都可以用了。它会导致编译成js的时候,所有提供的服务都会编译到js文件当中去。不管你用还是不用,
但是当我们写成下面这种形式的时候,它就不会出现这种问题了。编译出来的大小就比较小。只有你真正的注入了。才会编译到js里面。这其实就是干这用的。主要是第三类库开发的作者,使用它有效的减小体积。这个写法一直是官方在推动的。
4-14 依赖注入(2)
如果注入到某一个模块就这么写。这里注入到HomeModule中
4-14 依赖注入(2)
 

结束

 

相关文章:

  • 2021-12-08
  • 2021-11-19
  • 2022-12-23
  • 2021-08-06
  • 2022-01-20
  • 2021-11-29
  • 2021-11-15
猜你喜欢
  • 2021-05-05
  • 2022-12-23
  • 2021-11-30
  • 2021-09-16
  • 2022-12-23
相关资源
相似解决方案