UPD 新的 editCustomer 方法
editCustomer(editCustomer: Customer) {
this.router.navigate(['edit-customer'], { state: {id: editCustomer.id, name: editCustomer.name,
address: editCustomer.address, phones: editCustomer.phones } });
}
export class EditCustomerComponent implements OnInit {
editCustomerForm: FormGroup;
constructor(private formBuilder: FormBuilder, private customersClient: CustomersClient,
private router: Router, private activatedRoute: ActivatedRoute) {
this.editCustomerForm = this.formBuilder.group({
name: [this.activatedRoute.snapshot.paramMap.get('name'), Validators.required],
address: [this.activatedRoute.snapshot.paramMap.get('address'), Validators.required],
phones: [this.activatedRoute.snapshot.paramMap.get('phones'), Validators.required]
});
}
// остальной код
}
必须将对象传递给组件才能执行其修改。我希望将表中的对象传递给负责编辑它的组件。
到目前为止,我已经这样做了:
要传递到的组件的 TS(ctor 中的客户变量)
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { CustomersClient, Customer } from 'src/app/api-service.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-edit-customer',
templateUrl: './edit-customer.component.html',
styleUrls: ['./edit-customer.component.scss']
})
export class EditCustomerComponent implements OnInit {
editCustomerForm: FormGroup;
constructor(private formBuilder: FormBuilder, private customersClient: CustomersClient, private customer: Customer,
private router: Router) {
this.editCustomerForm = this.formBuilder.group({
name: [customer.name, Validators.required],
address: [customer.address, Validators.required],
phones: [customer.phones, Validators.required]
});
}
ngOnInit() {
}
editCustomer() {
this.customersClient.putCustomer(this.customer.id, this.editCustomerForm.value).subscribe(data => {
console.log('yspex');
});
}
toCustomerList() {
this.router.navigate(['list-customer']);
}
}
从我想传输的地方看起来像什么
import { element } from 'protractor';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';
import { CustomersClient, Customer } from 'src/app/api-service.service';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { Router } from '@angular/router';
@Component({
selector: 'app-list-customer',
templateUrl: './list-customer.component.html',
styleUrls: ['./list-customer.component.scss']
})
export class ListCustomerComponent implements AfterViewInit, OnInit {
customers = new MatTableDataSource<Customer>();
displayedColumns: string[] = ['id', 'name', 'address', 'phones', 'actions'];
paginator: MatPaginator;
sort: MatSort;
constructor(private customersClient: CustomersClient, private router: Router) { }
// ... другой код
editCustomer(customer: Customer) {
this.router.navigate(['edit-customer']);
}
}
实际上,它在 UI 中的外观。这个想法是这样的 - 根据用户单击“编辑”的对象,该对象被转移到组件,而不需要对数据库的新请求







