angular - 从用户注册获取用户信息的问题,以及 HTML 视图问题
问题描述
好的,所以我遇到的第一个问题是“ERROR TypeError: Cannot read property 'FirstName' of undefined”,所以我尝试在线寻找解决方案,但找不到解决问题的解决方案。我所做的尝试是添加*ngIf="user"
到输入标签,这似乎消除了 Web 控制台错误,但似乎输出 html 时出现问题,它看起来像这样:
我真的不确定,如果我正确设置了组件,我想知道如何解决这个问题?
注册.component.html
<div class="row">
<div class="card">
<div class="sm-jumbotron center-align">
<h2>User Registration</h2>
</div>
</div>
<form [formGroup]="userRegistrationForm" (ngSubmit)="onSubmit()" autocomplete="off">
<div class="row">
<div class="input-field col s6">
<label>First Name</label>
<input type="text" formControlName="FirstName" class="form-control" [(ngModel)]="user.FirstName" >
</div>
<div class="input-field col s6">
<label>Last Name</label>
<input type="text" formControlName="LastName" *ngIf="user" class="form-control" [(ngModel)]="user.LastName">
</div>
</div>
<div class="row">
<div class="input-field col s12">
<label data-error="Required Field">Username</label>
<input type="text" class="form-control" formControlName="Username" *ngIf="user" [(ngModel)]="user.UserName">
</div>
</div>
<div class="row">
<div class="input-field col s12">
<label>Password</label>
<input type="password" class="form-control" formControlName="Password" *ngIf="user" [(ngModel)]="user.Password">
</div>
</div>
<div class="row">
<div class="input-field col s12">
<label data-error="Invalid email">Email</label>
<input type="text" formControlName="Email" *ngIf="user" class="form-control" [(ngModel)]="user.Email" [pattern]="emailPattern">
</div>
</div>
<div class="row">
<div class="input-field col s12">
<button type="submit" class="btn-large btn-submit" *ngIf="user" [disabled]="!userRegistrationForm.valid">Submit</button>
</div>
</div>
</form>
</div>
注册.component.ts
import { Component, OnInit } from '@angular/core';
import { User } from '../shared/user.model';
import { NgForm, FormGroup, ReactiveFormsModule, FormBuilder, FormControl, Validators } from '@angular/forms';
import { UserService } from '../shared/user.service';
import {ToastrService} from 'ngx-toastr';
@Component({
selector: 'app-sign-up', //used in app.component.html
templateUrl: './sign-up.component.html',
styleUrls: ['./sign-up.component.css']
})
export class SignUpComponent implements OnInit {
user:User;
userRegistrationForm: FormGroup;
emailPattern = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$";
constructor(private userService:UserService, private toastr: ToastrService, private fb: FormBuilder) { }
ngOnInit() {
this.createRegisterForm();
}
createRegisterForm() {
this.userRegistrationForm = this.fb.group({
FirstName: ['', Validators.required],
LastName: ['', Validators.required],
Username: ['', Validators.required],
Password: ['', Validators.required],
Email: ['', Validators.required]
});
}
onSubmit(form:FormGroup) {
if (this.userRegistrationForm.valid) {
//this.user = Object.assign({}, this.userRegistrationForm.value);
this.userService.registerUser(this.user).subscribe((data:any) => {
this.toastr.success("User Registration Successful");
}, error => {
this.toastr.error(error);
});
}
}
}
用户服务.ts
import { Injectable } from '@angular/core';
import {HttpClient, HttpParams, HttpResponse} from '@angular/common/http';
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
import { User } from './user.model';
@Injectable({
providedIn: 'root'
})
export class UserService {
readonly rootUrl = "http://localhost:5000/" //connect to API
constructor(private http: HttpClient) { }
registerUser(user : User) : Observable<User>
{
const body : User = {
FirstName:user.FirstName,
LastName:user.LastName,
UserName: user.UserName,
Password: user.Password,
Email: user.Email
}
return this.http.post<User>(this.rootUrl + 'api/User/Register', body);
}
}
解决方案
删除[(ngModel)]
您的输入元素并取消注释
this.user = Object.assign({}, this.userRegistrationForm.value);
我认为它会起作用
推荐阅读
- jquery - 在内联可编辑剑道网格中实现类似于 Excel 的“向下复制”功能
- javascript - 在使用 bitcoinjs-lib 时,我得到 getAddress() is not fuction
- linux - SonarQube 7.2 不会在 CentOS 7 上以 systemd 启动
- sql - 无法在 VS 2017 的存储过程中执行断点
- android - 回收站视图显示空白
- ios - Swift数组追加不适用于collectionView重新加载数据
- javascript - 如何将 NGBootstrap 工具提示附加到字体真棒图标
- logic - 逻辑错误还是 Boogie 错误?量词:forall 的存在
- json - 使用 swiftyJson 解析 JSON
- r - 如何使用 readxl 跳过第二行