Angular4中通过ClassProvider方式实现依赖注入时,可选参数multi的用处是什么?

发布于 2022-09-06 02:55:29 字数 89 浏览 24 评论 0

useClass方式是常用的依赖注入方式,但一般都只用provide和useClass两个参数,还有一个参数multi很少有人提及,请问它怎么用,有demo最好了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧城烟雨 2022-09-13 02:55:29

multi是一个布尔值。

multi为true表示同一个token上面可以挂载多个提供商,根据不同情况实例化不同的提供商。

常用的场景有3个:

第一个,你在全局环境(根模块)配置了一个提供商,但是你在某一个特性模块或者组件当中需要引用同名的token,而又不想用根模块的提供商,你想引用其他的提供商,multi就要为true,可以是userClass、userValue、useFactory任意一种实例化;

第二个,在你使用模板式表单自定义指令,你都需要把自定义表单验证的指令注册到一个NG_Validators的Token上,你自定义的表单验证指令和angular内部表单验证指令都是挂载到NG_Validators,所以,multi要设为true;

第三个,当你自定义表单控件的时候,你需要把你自定义的表单控件注册到一个NG_VALUE_ACCESSORS的Token上面,当引用到该组件时候,可以让angular知道这是个表单控件,可以绑定到对应的表单模型当中,multi设为true,因为你可能有很多个自定义的表单控件。同时,如果你的表单控件需要验证器,那么也需要注册到NG_Validators上。

详情你可以参考angular官网的依赖注入https://www.angular.cn/guide/...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文