angular - After creating form then submit it shows Cannot read property 'name' of undefined in Angular 6
问题描述
createemployee.component.html
<form #employeeForm="ngForm" (ngSubmit)="onSaveEmp(employeeForm)" >
<div class="panel-body">
<div class="form-group">
<label for="name">Name</label>
<input type="text" placeholder="Enter Name" class="form-control"
name="name" ngModel required
#fname="ngModel"
>
</div>
<div class="panel-footer">
<button type="submit" class="btn btn-primary"
[disabled]="!employeeForm.valid" (click)="saveEmployee()"
>Save</button>
</div>
</div>
</form>
createemployee.component.ts
import { Component, OnInit, Input } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Employee } from '../employee.model';
import { EmployeeService } from '../employee.service';
import { Router } from '../../../../node_modules/@angular/router';
@Component({
selector: 'app-create-employee',
templateUrl: './create-employee.component.html',
styleUrls: ['./create-employee.component.css']
})
export class CreateEmployeeComponent implements OnInit {
@Input() employee: Employee;
photoPreview = false;
constructor(private empService: EmployeeService,
private router: Router
) { }
ngOnInit() {
}
onSaveEmp(empForm: NgForm) {
//console.log(empForm.value);
}
saveEmployee(employee: Employee) {
this.empService.save(employee);
'The Array of Form' + console.log(employee);
}
onShowPreview() {
this.photoPreview = !this.photoPreview;
}
}
employee.service.ts
import { Injectable, OnInit } from "@angular/core";
import { Employee } from "./employee.model";
@Injectable({
providedIn: 'root',
})
export class EmployeeService implements OnInit {
private employees: Employee[] = [
new Employee('John', 'Male', 'john@gmail.com', 1234567890, 'Phone', new Date('06/10/1991'),'IT', true, 'assets/images/male.png'),
new Employee('sunria', 'Female', 'sunria@gmail.com', 9876543211, 'Phone', new Date('06/30/1991'),'HR', true, 'assets/images/female.png'),
new Employee('Sandy', 'Female', 'sandy@gmail.com', 12344509876, 'Phone', new Date('02/28/2002'),'Manager', true, 'assets/images/female2.png')
]
constructor() {
}
ngOnInit() {}
getEmployees() {
return this.employees.slice();
}
save(employee: Employee) {
this.employees.push(employee);
}
}
employee.component.html
<div class="panel panel-primary" *ngFor="let employee of employees"
>
<div class="panel-heading">
<div class="panel-title">
<h4>{{ employee.name }}</h4>
</div>
</div>
</div>
I have normal createemployee.component.html form after I submitted the form in employees array show empty creation didn't add in employees[]. Empty details will be added in employees array. How can I achieve this problem it's like CRUD while creating new employee I got an error like this.
ERROR TypeError: Cannot read property 'name' of undefined
and create an undefined array.
解决方案
您需要使用安全导航运算符?
,
<div class="panel-heading">
<div class="panel-title">
<h4>{{ employee?.name }}</h4>
</div>
</div>
推荐阅读
- svn - svn 清理结果 svn: E155016: '/..../../../' 处的工作副本数据库已损坏
- javascript - 使用 Styled-Components 和 React 过渡组更改道具时如何应用高度过渡?
- java - 无法访问嵌套列表的大小或元素
- java - 每次我重新启动它时,我的计时器开始越来越快地触发
- dns - IBM Cloud DNS 解决方案是否提供在 IBM 内部解析名称的任何方法?
- powershell - Windows 10 powershell 的客户端 ssh 配置文件(/etc/ssh/ssh_config)在哪里?
- c - 通过寄存器 avr c Atmega328p 正确配置 I2C
- itext7 - 使用 iText7 将 Html 转换为 Pdf 时如何防止表内的数据丢失?
- python - 从不同文件夹导入python代码
- typescript - 在抽象类的方法中返回动态类型
打字稿