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



把home.service导出



在模板这里输入Home。模板帮我们加了注解@Injectable()

我们把之前写的ts的数据赋值过来


注入homeService

topMenu还是这个类型。只不过现在是一个空的数组。

调用service的方法




都设置为空数组,从service中获取数据

构造函数注入

ngInit方法内赋值


页面效果不变。

依赖注入的好处 让彼此耦合性降低了。
把某一个api的url当做一个值传递过去。

在下面输出



虽然是获取到了。但是这里有一个警告

为了避免起名的冲突

创建了一个const常量 token 使用 InjectionToken。这样angular在引用的时候会处理 ,避免冲突。

这样把token当做是唯一辨识



把这个token粘贴出来

放在这里导出出去








实际services可以不在provider里面声明

一般服务注册到应用的根

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

如果注入到某一个模块就这么写

原文:https://www.cnblogs.com/wangjunwei/p/13576919.html