Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度:尝试添加recaptcha。错误=>;名称为';验证码&x27;_Javascript_Angular_Captcha - Fatal编程技术网

Javascript 角度:尝试添加recaptcha。错误=>;名称为';验证码&x27;

Javascript 角度:尝试添加recaptcha。错误=>;名称为';验证码&x27;,javascript,angular,captcha,Javascript,Angular,Captcha,因此,我遵循了一个教程,介绍了如何向表单中添加recaptcha以防止垃圾邮件。我遵循了所有步骤,但仍然出现以下错误: error inside log Error: No value accessor for form control with name: 'captcha' at _throwError (forms.js:2139) at setUpControl (forms.js:2008) at FormGroupDirective.addControl (

因此,我遵循了一个教程,介绍了如何向表单中添加recaptcha以防止垃圾邮件。我遵循了所有步骤,但仍然出现以下错误:

 error inside log Error: No value accessor for form control with name: 'captcha'
    at _throwError (forms.js:2139)
    at setUpControl (forms.js:2008)
    at FormGroupDirective.addControl (forms.js:5144)
    at FormControlName._setUpControl (forms.js:5743)
    at FormControlName.ngOnChanges (forms.js:5684)
    at checkAndUpdateDirectiveInline (core.js:11642)
    at checkAndUpdateNodeInline (core.js:13252)
我有一个反应式注册表单,其中我有以下元素,应该是验证码和表单控件。但不幸的是,我什么也没看到

<div nbRecaptcha key="6LfNfHYUAAAAAFaa7dVi2au1tnfod-2eR3Rb2enM" formControlName="captcha"></div>
以及注册组件表单:

this.mySignupForm = new FormGroup({
          captcha: new FormControl()
        });

有人能看到我做错了什么吗?

名为“captcha”的表单控件的错误
无值访问器
。这可以通过使用
forwardRef
将指令/控件添加到所有可用
NG\u值\u访问器的列表中来解决。您正在有效地扩展
NG\u VALUE\u访问器的多提供程序
,以便此指令可以访问
ControlValueAccessor

@Directive({
  selector: '[nbRecaptcha]',
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => RecaptchaDirective),
      multi: true
    },
    ReCaptchaAsyncValidator
  ]
})
下面是一个正在解决该特定错误的示例。我不得不删除您在示例中使用的一些自定义类/配置,因为我不知道它们的确切实现

我找不到创建自定义控件的官方文档,但有一些可靠的文章讨论了创建引用此必要注册的自定义控件


希望这有帮助

您正在对象中使用新的FormControl构造函数。。。请尝试验证码:[''],它会导致错误。“类型字符串[]不可分配给构造函数中的类型‘abstractControl’”,请声明私有fb:FormGroup然后this.mySignupForm=this.fb({captcha:['']});从未尝试使用指令执行此操作,但在组件中,必须在提供程序中具有
{provide:NG\u VALUE\u访问器,使用existing:forwardRef(()=>CompName),multi:true}
@Directive({
  selector: '[nbRecaptcha]',
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => RecaptchaDirective),
      multi: true
    },
    ReCaptchaAsyncValidator
  ]
})