Javascript 角度:尝试添加recaptcha。错误=>;名称为';验证码&x27;
因此,我遵循了一个教程,介绍了如何向表单中添加recaptcha以防止垃圾邮件。我遵循了所有步骤,但仍然出现以下错误: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 (
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
]
})