当前位置: 首页 > 知识库问答 >
问题:

在创建NG\u值\u访问器时forwardRef是否为必填项

晏阳飙
2023-03-14

我有一个自定义输入组件,它实现ControlValueAccessor,提供程序声明如下。它似乎工作得很好。在我能在互联网上找到的所有教程中,只要提供NG_VALUE_访问器,forwardRef就被广泛使用

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

providers: [{
  provide: NG_VALUE_ACCESSOR,
  useExisting: CustomInputComponent,  //Notice I omitted forwardRef here and it works fine
  multi: true
}]

共有2个答案

夏昌胤
2023-03-14

forwardRef的目标是延迟对当前代码执行时未定义的类的访问。

这对你的情况不是强制性的,因为TypeScript在类定义之后执行装饰器时会以一种方式转换你的代码。

let CustomInputComponent = /** @class */ (() => {
    var CustomInputComponent_1;
    let CustomInputComponent = CustomInputComponent_1 = class CustomInputComponent {
    };
    CustomInputComponent = CustomInputComponent_1 = __decorate([
        Component({
            selector: 'app-custom-input',
            template: '<input />local: {{val}}',
            providers: [
                {
                    provide: NG_VALUE_ACCESSOR,
                    useExisting: CustomInputComponent_1, // already defined!!!
                    multi: true
                }
            ]
        })
    ], CustomInputComponent);
    return CustomInputComponent;
})();
谯皓君
2023-03-14

forwardRef允许Angular在定义依赖项之前插入依赖项。在这种情况下,如果如您所述,在自定义输入组件的@Componentdecorator中定义了此提供程序数组,那么它将起作用,因为decorator是在定义类之后应用的。

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

请参阅此处以获得深入阅读

 类似资料:
  • 运行,我得到以下错误: 我做了问题25596504中建议的更正,特别是更改了文件至运气不好。我遵循Hartl教程第688页,该页指定将它们添加为

  • 我试图在OSGi(Felix)中使用新的Leap运动传感器,但我最终遇到了一个异常访问冲突。 在我的清单中,我声明捆绑NativeCode如 当然: 在OSGi之外使用相同库的简单程序运行良好 这两个库在“x86”文件夹中的我的包中 “osname=win32;processor=x86”适合我(已经用其他bunble进行了测试) 在反编译Leap Motion jar后,我看到LeapJava.

  • 我试图在wp_woocommerce_order_itemmeta表中创建自定义元数据。但是要创建我想存储为元数据的数据,我需要知道在WooCommerce钩子woocommerce_checkout_create_order_line_item上创建的订单项的product_id。 我已经成功地用会话变量的值创建了一个元记录,但是当我试图获取订单项目的产品id时,我的代码失败了。我非常希望能找到

  • 信息:[调试]将设备id设置为ZY223DDMM8信息:[调试]等待设备准备就绪并响应shell命令(超时=5)信息:[调试]执行cmd:E:\MobileAutomation\Android\Android sdk\platform tools\adb.exe-s ZY223DDMM8等待设备信息:[调试]正在执行cmd:E:\MobileAutomation\Android\Android s

  • 我从以下改装服务中获得了一个json结果: 我在改装后变得像bellow一样: 但是告诉我: 下面是我的模型:

  • 我正在与CheckMarx漏洞之一作斗争。我需要一些指导来支持这一点。以下是我的代码: 这里con是(HttpurlConnection)新URL(“一些URL”)。openConnection()。 所以,checkmarx在《in》中强调了这个问题。readLine()。 我尝试的变通方法: 1: StringEscape eUtils.unescapeJson(in.readLine()),