Angular4中通过ClassProvider方式实现依赖注入时,可选参数multi的用处是什么?
useClass方式是常用的依赖注入方式,但一般都只用provide和useClass两个参数,还有一个参数multi很少有人提及,请问它怎么用,有demo最好了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
useClass方式是常用的依赖注入方式,但一般都只用provide和useClass两个参数,还有一个参数multi很少有人提及,请问它怎么用,有demo最好了。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
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/...