【发布时间】:2023-03-11 23:08:02
【问题描述】:
我正在尝试做一些我不确定是否可行的事情。 对于我拥有的 Angular 表单和这样的对象:
export class NewUserRegisterModelDTO{
userData:UserDetailModelDTO;
roles:RoleModelDTO[];
ownerData:OwnerDetailDTO;
}
export class UserDetailModelDTO {
email:string;
username:string;
password:string;
repeatPassword: string;
}
在我的 HTML 表单中,我有类似的内容:
<form class="form" #newUser="ngForm" action="" method="post">
<h2 class="text-info">New User</h2>
<hr>
<div class="mr-10 ml-10">
<h4 class="text-info mt-3">Login Info</h4>
<hr>
<div class="row">
<div class="col">
<div class="form-group">
<label for="email" class="text-info">Email</label><br>
<input type="text" name="email" id="email" class="form-control" placeHolder="email" [ngClass]="{'formInputError': ((email.errors?.minlength || email.errors?.required)) && email.touched}" [(ngModel)]="newUser.userData.email" required #email="ngModel">
<div *ngIf="email.touched && email.errors?.required" class="form-control-feedback mt-2 ml-2">Email required</div>
</div>
</div>
它不是完整的 HTML,因为它太大了。但正如你所看到的,重点是这个标签:[(ngModel)]="newUser.userData.email"
在我的 TS 文件中,我有以下内容:
export class NewUserComponent {
public newUser : NewUserRegisterModelDTO;
loadingUsernameCheck: boolean = false;
usernameExist : boolean;
constructor(private router: Router, private authService : AuthService, private userService: UserService) {
this.newUser = new NewUserRegisterModelDTO();
this.newUser.userData = new UserDetailModelDTO();
this.newUser.ownerData = new OwnerDetailDTO();
console.log(this.newUser);
}
当我加载页面时出现以下错误:
错误类型错误:无法读取未定义的属性“电子邮件” 在 Object.eval [as updateDirectives] (NewUserComponent.html:13)
可以像这样声明一个 [(ngModel)] 吗?还是我必须创建一个包含所有独立字段的对象,然后构造 NewUserRegisterModelDTO?
谢谢
【问题讨论】:
标签: angular forms object templates structure