- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试来自官方 Angular 响应式(Reactive)表单验证 doc 。我在渲染 formControlName 时遇到问题。它给出了用户名未定义的错误这里有一个错误
Error: Uncaught (in promise): Error: Error in ./UserAddComponent class UserAddComponent - inline template:8:15 caused by: Cannot read property 'username' of undefined
Error: Error in ./UserAddComponent class UserAddComponent - inline template:8:15 caused by: Cannot read property 'username' of undefined
at ViewWrappedError.ZoneAwareError (zone.js:958)
at ViewWrappedError.BaseError [as constructor] (errors.js:22)
at ViewWrappedError.WrappedError [as constructor] (errors.js:87)
at new ViewWrappedError (errors.js:77)
at CompiledTemplate.proxyViewClass.DebugAppView._rethrowWithContext (view.js:650)
at CompiledTemplate.proxyViewClass.DebugAppView.detectChanges (view.js:623)
at CompiledTemplate.proxyViewClass.AppView.internalDetectChanges (view.js:410)
at CompiledTemplate.proxyViewClass.View_UserAddComponent_Host0.detectChangesInternal (/AppModule/UserAddComponent/host.ngfactory.js:29)
at CompiledTemplate.proxyViewClass.AppView.detectChanges (view.js:425)
at CompiledTemplate.proxyViewClass.DebugAppView.detectChanges (view.js:620)
at ViewRef_.detectChanges (view_ref.js:170)
at RouterOutlet.activate (router_outlet.js:156)
at ActivateRoutes.placeComponentIntoOutlet (router.js:1318)
at ActivateRoutes.activateRoutes (router.js:1285)
at router.js:1221
at resolvePromise (zone.js:643) [angular]
at resolvePromise (zone.js:619) [angular]
at :4200/vendor.bundle.js:138417:17 [angular]
at Object.onInvokeTask (ng_zone.js:264) [angular]
at ZoneDelegate.invokeTask (zone.js:362) [angular]
at Zone.runTask (zone.js:166) [<root> => angular]
at drainMicroTaskQueue (zone.js:529) [<root>]
at HTMLAnchorElement.ZoneTask.invoke (zone.js:420) [<root>]
我按照步骤操作,还检查了 angular2 中的 plucker。它运行良好,但在我的项目中,它给了我一个错误
buildForm(): void {
this.userAddForm = this.fb.group(
{
username: ['', [Validators.minLength(8), Validators.maxLength(25), Validators.required]],
password: ['', [Validators.minLength(8), Validators.maxLength(25), Validators.required]],
passwordConfirm: ['', [Validators.minLength(8), Validators.maxLength(25), Validators.required]],
userRole: ['', [Validators.required]],
locationCode: ['', [Validators.required]]
},
{ Validators: matchingPasswordsValidators('password', 'confirmPassword') }
);
this.active = false;
this.userAddForm.valueChanges
.subscribe(data => this.onValueChanged(data));
this.onValueChanged();
}
onValueChanged(data?: any) {
if (!this.userAddForm) { return; }
const form = this.userAddForm;
for (const field in this.userAddErrors) {
// clear previous error message (if any)
this.userAddErrors[field] = '';
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.userAddErrors[field] += messages[key] + ' ';
}
}
}
}
userAddErrors: {
username: "",
password: "",
passwordConfirm: "",
userRole: "",
locationCode: ""
}
validationMessages = {
'username': {
'required': 'username is required.',
'minlength': 'username must be at least 8 characters long.',
'maxlength': 'username cannot be more than 24 characters long.'
},
'password': {
'required': 'password is required.',
'minlength': 'password must be at least 8 characters long.',
'maxlength': 'password cannot be more than 24 characters long.'
},
'passwordConfirm': {
'required': 'Confirm Password is required.',
},
'userRole': {
'required': 'User Role is required.',
},
'locationCode': {
'required': 'Location is required'
}
};
在我的 html 中,我已经根据文档完成了
<form name="form" class="form-horizontal" method="POST"
(ngSubmit)="addNewUser()" [formGroup]="userAddForm">
<div class="box-body">
<div class="form-group required">
<label class="control-label col-md-4 requiredField"> Username<span class="asteriskField">*</span> </label>
<div class="controls col-md-8 ">
<input class="input-md textinput textInput form-control" formControlName="username" placeholder="Choose your username" required/>
<div *ngIf="userAddErrors.username" class="alert alert-danger">
{{ userAddErrors.username }}</div>
</div>
</form>
我在我的应用程序模块中添加了 reactieappmodule
并注入(inject)了 formbuilder。
最佳答案
看起来错误是由 userAddErrors.username
引起的。
使用=
而不是:
。后者指定对象的类型而不是设置值。
userAddErrors= {
username: "",
password: "",
passwordConfirm: "",
userRole: "",
locationCode: ""
}
关于javascript - 在 angular2 中渲染 formControlName 时未定义 formcontrolname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382325/
我正在尝试来自官方 Angular 响应式(Reactive)表单验证 doc 。我在渲染 formControlName 时遇到问题。它给出了用户名未定义的错误这里有一个错误 Error: Unca
我创建了 form: FormGroup 变量,我在服务的构造函数中使用 FormArray localizationData: FormArray 定义了组: this.form = this.fo
我正在使用响应式控件构建动态表单,我需要能够显示数据而不是在输入控件中使用它。我基本上有一个开关,可以在基于输入和只读(用于打印)之间切换表单。但是,我不能将 label 或 span 与 formC
我想创建一个自定义输入组件并在我的表单中重用它,但我遇到了 formGroup 和 formControlName 的问题。 // Form // CustomInput Component
在括号内使用 formControlName 和不在括号内有什么区别?在动态表单教程中 formcontrolname 被用在方括号内 [formControlName]="dyncontrol.ke
我在 Mat-Autocomplete 上使用 formControlName 时遇到问题。 我不知道为什么,但我的 formControlName 不会发送数据,是我写错了吗? 当我尝试从 HTML
我想创建一个可以与 FormBuilder API 一起使用的自定义输入组件。如何在组件中添加 formControlName? 模板: {{ label }}
新: 所以我可以让它在没有 radio 组或没有正确绑定(bind)的情况下工作。我无法让它与两者一起工作。 这是允许的:
我正在使用 mat-select ,我需要为它设置默认值。它有效,但在向其添加 formControlName 后,不显示其默认值。 我试过 [(ngModel)] 和 [(value)] ,以及“m
在创建模型驱动表单时,我收到一个错误:错误:formControlName 必须与父 formGroup 指令一起使用。您需要添加一个 formGroup 指令并将其传递给现有的 FormGroup
我想通过实现 ControlValueAccessor 创建自定义表单元素地址。 我正在尝试创建一个 AddressComponent,其中有多个输入字段。我想在如下所示的 react 形式中使用此组
我想通过实现 ControlValueAccessor 创建自定义表单元素地址。 我正在尝试创建一个 AddressComponent,其中有多个输入字段。我想在如下所示的 react 形式中使用此组
我正在通过 angularjs2 中的表单生成器制作表单,我想添加表单元素的 formControlName 属性/属性,如下所示: 我该怎么做? 编辑: 我还想将有效性消息放在输入元素旁边,
如何将 formControlName 映射到特定的 formArray 项? 我无法控制服务器数据并尝试创建一个包含电话号码数组的表单。 表单本身在视觉上并没有将手机并排布置,我希望能够像通常使用
我曾经有一个没有任何验证的简单表单,其中 HTML 大致如下所示: [(ngModel)]="todoListService.toDoData.tas
我希望将数字管道添加到 Angular2 中的输入字段。我正在使用模型驱动的表单,我的所有输入都有一个 formControlName 而不是使用数据绑定(bind)。我遇到的问题是 formCont
我正在使用基于模型的表单,我的表单如下所示: Submit 我想写一个 Protractor 规范来测试登录。我喜欢在我的规范中做类似下面的事情: element(by.f
哦,angular2...为什么这么难? {{exposure}} 如果我在输入中使用 formControlName,则值是正确的。 如何获取模板中的曝光值?标签中的空白 最佳答案 The for
作为 Angular documentation说我们可以在表单中使用 formControlName: Hero Detail FormControl in a FormGroup
我正在使用 Angular2 的 ReactiveFormsModule 创建一个包含表单的组件。这是我的代码: foo.component.ts: constructor(fb: FormBuild
我是一名优秀的程序员,十分优秀!