我已经开发一个应用程序一个月了。我遇到了很多问题,几乎所有问题我都找到了解决方案而不是打开线程,但是有一个设计问题我还没有弄清楚。
假设我有一个名为 MonkeyComponent 的小组件,它只有我的模型 (Monkey) 的表单
export class Car {
model: string
}
export class Monkey {
// If doc contains 8 digits
driversLicense?: string;
// If doc contains 13 digits
pubId?: string;
name: string;
age: number;
car: Car; // another model (could be added to form later)
}
export class AppComponent {
formGroup: FormGroup;
constructor(private fb: FormBuilder, private store: MonkeyStore) {
this.formGroup = this.fb.group({
name: [''],
doc: [''],
age: [''],
});
}
save() {
// now I need to map my form value to my monkey model
// but they are mismatched (because doc can be used to populate
// either pubId or driversLicense)
}
}
这种表单映射在我项目的许多模型中都很常见(表单的一个字段代表模型中的另一个字段)
我也不能创建多个字段(客户要求)
您将如何创建此映射?我愿意接受设计建议(如果您有更好的选择,则不需要类模型)
有没有一种反应方式来做到这一点?
不必使用 Object.assign 然后手动映射不同的字段是否可以避免?
一个干净的解决方案是找到一种this.formGroup.value
方法
{
pubId: '1234567890123',
name: 'Miwalkey',
age: 12,
}
或者
{
driversLicense: '12345678',
name: 'Miwalkey',
age: 12,
}
取决于 doc 的值(长度)。