创建 NG_VALUE_ACCESSOR 时 forwardRef 是强制性的

Sur*_*LSV 7 dependency-injection angular controlvalueaccessor

我有一个自定义输入组件,它实现了 ControlValueAccessor,提供者声明如下。它似乎工作正常。在我可以在互联网上找到的所有教程中,只要提供 NG_VALUE_ACCESSOR,就会广泛使用 forwardRef

将以下代码发送到生产环境是否安全?

providers: [{
  provide: NG_VALUE_ACCESSOR,
  useExisting: CustomInputComponent,  //Notice I omitted forwardRef here and it works fine
  multi: true
}]
Run Code Online (Sandbox Code Playgroud)

Pau*_*aul 6

forwardRef使 Angular 能够在定义之前注入依赖项。@Component在这种情况下,如果像您提到的那样在自定义输入组件的装饰器内定义了此提供程序数组,则它将起作用,因为装饰器是在定义类之后应用的

基本上,只要您仅使用它来引用同一组件的装饰器内的组件,就可以删除它。forwardRef

请参阅此处进行深入阅读