我需要编辑功能帮助。当我点击编辑按钮时,我需要将这些项目加载到表单中。这就是我的应用程序的工作方式,首先,有一个用户列表,然后您可以单击该特定用户的“查看更多”按钮,它会将您重定向到一个新页面。在新的页面中,你会发现“编辑按钮”所以我试图通过选择它与联系人编号做我的编辑功能,因为我没有索引,因为它是一个对象。只有一个问题,那就是我如何加载编辑表格中的项目?我相信这是一个非常简单的问题,但我对此感到困惑。如果您有更好的解决方案,请帮助我。将表单中的项加载到角度编辑
用户detail.component.ts
export class UserDetailComponent implements OnInit {
user: User;
id: number;
constructor(private userService: UserService,
private route: ActivatedRoute,
private router: Router) { }
ngOnInit() {
this.route.params
.subscribe((params: Params) => {
this.id = +params['id'];
this.user = this.userService.getUser(this.id);
});
}
onEditDetail(index: number) {
this.router.navigate(['users', this.id, 'edit']);
}
}
用户edit.component.html
<div class="card-block">
<form (ngSubmit)="onUpdateUser(f)" #f="ngForm">
<div class="form-group">
<label for="First Name">First Name</label>
<input type="text" class="form-control" [(ngModel)]="user.f_name" name="f_name" ngModel required>
</div>
<div class="form-group">
<label for="Last Name">Last Name</label>
<input type="text" class="form-control" [(ngModel)]="user.l_name" name="l_name" ngModel required>
</div>
<div class="form-group">
<label for="Contact Number">Contact Number</label>
<input type="number" class="form-control" [(ngModel)]="user.contact_no" name="contact_no" ngModel required pattern="^[1-9]+[0-9]*$">
</div>
<button class="btn btn-warning pull-right" [disabled]="!f.valid"><i class="fa fa-download" aria-hidden="true"></i> Update</button>
</form>
</div>
个用户edit.component.ts
export class UserEditComponent implements OnInit {
@ViewChild('f') editForm: NgForm;
user: User;
id: number;
constructor(private userService: UserService,
private route: ActivatedRoute,
private router: Router) { }
ngOnInit() {
this.route.params
.subscribe((params: Params) => {
this.id = +params['id'];
this.user = this.userService.getUser(this.id);
});
}
onUpdateUser(form: NgForm) {
const value = form.value;
const updatedUser = new User(value.f_name, value.l_name, value.contact_no);
alert("Successfully Updated");
this.router.navigate(['users', this.id]);
}
}
user.service.ts
import { User } from './user.model';
import { Subject } from 'rxjs/Subject';
export class UserService {
usersChanged = new Subject<User[]>();
private users: User[]= [
new User('Harry', 'James', 99999889),
new User('Thomas', 'Baker', 99638798)
];
getUsers() {
return this.users.slice();
}
getUser(index: number) {
return this.users[index];
}
addUser(user: User){
this.users.push(user);
this.usersChanged.next(this.users.slice());
}
deleteUser(index: number){
this.users.splice(index, 1);
this.usersChanged.next(this.users.slice());
}
}
据我所知,'this.editForm.setValue'语法仅供反应形式。但是你似乎在使用模板驱动的表单。 – DeborahK
@DeborahK。那么什么是模板驱动的equiavalent? – Joseph
在下面使用ngModel绑定作为@mok提及。 – DeborahK