angular 复杂对象的自定义输入

angular custom input for complex object

我有一个包含 3 个字符串成员的对象,我想为它创建一个可重用的输入,因为它在整个应用程序中被多次使用,所以我正在尝试创建一个包含所有 3 个成员输入的自定义输入.但我没有找到办法,因为我发现的其他解决方案不允许我将复杂对象 (MyObject) 通过 ngModel 传递到我的自定义输入组件。 为了增加我的问题的复杂性,我还需要验证我的自定义输入: 如果我的自定义输入是 required,所有 3 个子输入都是 required。 如果其中一个子输入被填充,其他 2 个是 required, 如果其中一个子输入无效,我的自定义输入也无效。

这是我希望我的代码如何工作的示例(如果可能)

MyObject.ts

export class MyObject {
    name: string;
    category: string;
    areaName: string;
}

MyFormComponent.ts

@Component({
    selector: 'app-my-form'
    template: `
     <form #myForm="ngForm">
       <my-object-input [(ngModel)]="myObj" ></my-object-input>
     </form>`
})
export class MyFormComponent {
    myObj: MyObject;
}

谢谢

我没有发现通过创建自定义表单控件来解决您的任务有任何问题。请关注这篇解释清楚的文章 custom-form-controls-in-angular-2。 在本文中您还可以找到添加自定义验证规则的方法。

总体思路是在您的自定义表单控件中实现 ControlValueAccessor 接口,并在自定义 writeValue(value: any) 方法中添加您的逻辑。