angular - 在 Angular 7 注册表单错误处理中出现错误,例如缺少电子邮件@
问题描述
这是我的 signup.component.ts
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { JarwisService } from 'src/app/services/jarwis.service';
import { TokenService } from 'src/app/services/token.service';
@Component({
selector: 'app-signup',
templateUrl: './signup.component.html',
styleUrls: ['./signup.component.css']
})
export class SignupComponent implements OnInit {
public form = {
email: null,
name: null,
password: null,
password_confirmation: null
};
public error = [];
constructor(
private Jarwis:JarwisService,
private Token:TokenService,
private router:Router
) { }
onSubmit() {
this.Jarwis.signup(this.form).subscribe(
data => this.handleResponse(data),
error => this.handleError(error)
);
}
handleResponse(data) {
this.Token.handle(data.access_token);
this.router.navigateByUrl('/profile'); // here navigate to show user email has been sent to email
}
handleError(error) {
this.error = error.error.errors;
}
ngOnInit(): void {
}
}
这是我的 signup.component.html
<div class="mt-4 col-8 offset-2">
<div class="card">
<div class="card-header">Signup Here</div>
<div class="card-body">
<form #SignupForm=ngForm (ngSubmit)="onSubmit()">
<div class="form-group row">
<label for="inputName3" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<input type="text" name="name" class="form-control" id="inputName3" placeholder="Name" [(ngModel)]="form.name" required>
<div class="alert alert-danger" [hidden]="!error.name">
{{error.name}}
</div>
</div>
</div>
<div class="form-group row">
<label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email" [(ngModel)]="form.email" required>
<div class="alert alert-danger" [hidden]="!error">
{{error}}
</div>
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" name="password" class="form-control" id="inputPassword3" placeholder="Password" [(ngModel)]="form.password" required>
<!-- <div class="alert alert-danger" [hidden]="!error.password">
{{error.password}}
</div> -->
</div>
</div>
<div class="form-group row">
<label for="inputPasswordConfirmatio3" class="col-sm-2 col-form-label">Confirm Password</label>
<div class="col-sm-10">
<input type="password" name="password_confirmation" class="form-control" id="inputPasswordConfirmatio3" placeholder="Confirm Password" [(ngModel)]="form.password_confirmation" required>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10 offset-2">
<button type="submit" class="btn btn-primary" [disabled]="SignupForm.invalid">Sign Up</button>
<a routerLink="/login" class="btn btn-info float-right">Sign in</a>
</div>
</div>
</form>
</div>
</div>
</div>
所以我收到语法错误“未定义标识符'name'。'any []'不包含这样的成员”并且我尝试搜索类似的错误处理但没有任何效果,在登录时它可以工作,因为它不是数组但是为什么我声明一个它抱怨的空数组
解决方案
我变了
public error = [];
至
public error = {name:null, email:null, password:null};
它奏效了。
推荐阅读
- javascript - 使用来自 React-redux 的连接时返回未定义的方法
- html - css提示图像和固定背景
- python - 更改天数以仅表示熊猫数据框中的整数
- amazon-web-services - 无法从 S3 存储桶中“获取对象” - 策略不起作用
- javascript - JS函数后的参数看不懂
- php - 获取 json 数据并传递给 PHP 字符串(此处为 Maps api)
- openstack - Openstack Octavia lbaasv2:找不到 lbaasv2 服务插件
- javascript - 使用 JSON.parse() 将 db json 转换为 javascript 对象失败
- reactjs - React App 组件中未终止的 JSX 内容
- ionic-framework - 可执行文件使用无效权利签名 - 0xe8008016