首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使Validator接口工作在模板驱动的角2自定义组件上。

无法使Validator接口工作在模板驱动的角2自定义组件上。
EN

Stack Overflow用户
提问于 2016-09-18 04:10:29
回答 1查看 774关注 0票数 0

我有一个银行帐户的域模型:

export interface BankAccount { acc1: string, acc2: string, acc3: string, acc4: string }

父表单是模板驱动的,捕获名称和银行帐号.为了捕获由4个部分数字组成的银行帐号,我设法用模型驱动的方式编写了一个自定义表单控制组件。它实现了ControlValueAccessor和Validator接口,因此,在父窗体上,它的值/有效工作非常完美。

现在,我试图用模板驱动的方式编写另一个银行账户组件。到目前为止,它的ControlValueAccessor接口似乎可以工作,但我无法使它的Validator接口工作。

问题是:在account 1中,它的值被发送到父窗体,并在每次输入任何数字时都被验证。但是在account 2中,发出的值是确定的,但是由于某种原因,value ()方法没有被调用?

这个柱塞

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-18 08:35:22

在第二个组件中,您必须手动触发propagateChange方法来调用验证。

模板

代码语言:javascript
运行
复制
<input type="text" name="acc1" [ngModel]="accountNumber.acc1"
    (ngModelChange)="change('acc1', $event)"/>

代码语言:javascript
运行
复制
<input *ngFor="let prop of ['acc1', 'acc2', 'acc3', 'acc4']" type="text" 
   name="{{prop}}" [ngModel]="accountNumber[prop]" 
          (ngModelChange)="change(prop, $event)"/>

组件

代码语言:javascript
运行
复制
change(prop, val) {
  this.accountNumber[prop] = val; 
  this.propagateChange(this.accountNumber);
}

注意:我在propogateChange方法中修正了您的错误

更新的柱塞实例

还请参阅一篇关于它的伟大文章:

  • 角2中的自定义窗体控件
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39554008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档