corporate.html
<form #f="ngForm" name="corporateProfileForm" ng-submit="corporateFrmSave(objDS, objDSCurrency)" novalidate="">
<div class="row form-group">
<div class="col-md-12" >
<input type="text" *ngIf="formData" [(ngModel)]="formData.Corporate_Id" id="corpid" title="Corporate ID" tab-index="1" name="corpid" maxlength="20" #corpid="ngModel" required/>
<label for="corp"><b>Corporate ID</b></label>
<div *ngIf="corpid.invalid && (corpid.dirty || corpid.touched)" class="alert alert-danger">
<div *ngIf="corpid.errors.required">
Name is required.
</div>
<div *ngIf="ncorpidame.errors.minlength">
Name must be at least 4 characters long.
</div>
<div *ngIf="corpid.errors.forbiddenName">
Name cannot be Bob.
</div>
</div>
</div>
</div>
</form>
我收到错误消息
错误类型错误:无法读取属性&#39;无效&#39;未定义的
答案 0 :(得分:0)
这是因为corpid
是undefined
,您可以在您的组件中定义corpid
corpid : any = {}
或者您还可以在*ngIf
中添加一个条件,在模板中添加:
<div *ngIf="corpid && corpid.invalid && (corpid.dirty || corpid.touched)" class="alert alert-danger">
答案 1 :(得分:0)
确保使用以下结构定义变量:
TS文件
export class ContactComponent implements OnInit {
myform: any;
corpid: FormControl;
constructor() {
}
ngOnInit() {
this.createFormControls();
this.createForm();
}
createFormControls() {
this.corpid= new FormControl('', Validators.required);
}
createForm() {
this.myform = new FormGroup({
corpid: this.corpid,
});
}
HTML文件
<div class="md-form form-sm form-group"
[ngClass]="{
'invalid': corpid.invalid && (corpid.dirty || corpid.touched),
'valid': corpid.valid && (corpid.dirty || corpid.touched)
}">
<i class="fa fa-user prefix"></i>
<input
type="text" id="corpid" class="form-control"
required
[formControlName]="'corpid'">
<label for="corpid" class="">Your corpid</label>
</div>
<div class="form-control-feedback"
*ngIf="corpid.errors && (corpid.dirty || corpid.touched)">
<p *ngIf="corpid.errors.required">corpid is required</p>
</div>
很难分辨,因为问题不在您的HTML剪辑中,而是在.ts
文件中。
我希望我的代码能够提供帮助
答案 2 :(得分:0)
问题在于*ngIf
,因此在检查该条件时,Angular会渲染模板的其余部分,而在评估*ngIf
时的一小部分时间内,模板引用变量corpid
不存在,因此在尝试检查验证时会抛出错误。
将输入字段包含 *ngIf
内的验证div,而不是仅在输入字段中应用。
<div class="row form-group" *ngIf="formData">
<input [(ngModel)]="formData.Corporate_Id" id="corpid" ... >
<!-- more code here... -->
</div>
<强> DEMO 强>