我有一个银行帐户的域模型:
export interface BankAccount { acc1: string, acc2: string, acc3: string, acc4: string }
父表单是模板驱动的,捕获名称和银行帐号.为了捕获由4个部分数字组成的银行帐号,我设法用模型驱动的方式编写了一个自定义表单控制组件。它实现了ControlValueAccessor和Validator接口,因此,在父窗体上,它的值/有效工作非常完美。
现在,我试图用模板驱动的方式编写另一个银行账户组件。到目前为止,它的ControlValueAccessor接口似乎可以工作,但我无法使它的Validator接口工作。
问题是:在account 1中,它的值被发送到父窗体,并在每次输入任何数字时都被验证。但是在account 2中,发出的值是确定的,但是由于某种原因,value ()方法没有被调用?
这个柱塞
发布于 2016-09-18 08:35:22
在第二个组件中,您必须手动触发propagateChange
方法来调用验证。
模板
<input type="text" name="acc1" [ngModel]="accountNumber.acc1"
(ngModelChange)="change('acc1', $event)"/>
或
<input *ngFor="let prop of ['acc1', 'acc2', 'acc3', 'acc4']" type="text"
name="{{prop}}" [ngModel]="accountNumber[prop]"
(ngModelChange)="change(prop, $event)"/>
组件
change(prop, val) {
this.accountNumber[prop] = val;
this.propagateChange(this.accountNumber);
}
注意:我在
propogateChange
方法中修正了您的错误
更新的柱塞实例
还请参阅一篇关于它的伟大文章:
https://stackoverflow.com/questions/39554008
复制相似问题