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/...
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/...