加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Angular2中将管道添加到formControlName

发布时间:2020-12-17 18:09:51 所属栏目:安全 来源:网络整理
导读:我想在Angular2的输入字段中添加一个数字管道.我正在使用模型驱动的表单,我的所有输入都有一个formControlName而不是使用数据绑定.我遇到的问题是formControlName =“number | number:’1.2-2’”是无效的代码.它抛出一个错误,说找不到formControlName.我不
我想在Angular2的输入字段中添加一个数字管道.我正在使用模型驱动的表单,我的所有输入都有一个formControlName而不是使用数据绑定.我遇到的问题是formControlName =“number | number:’1.2-2’”是无效的代码.它抛出一个错误,说找不到formControlName.我不想删除formControlName来代替ngModel,因为我正在订阅表单输入以在使用表单时进行验证.

解决方法

更新:我意识到一种更简单,更明智的方法是使用valueChanges对change事件值执行管道转换来执行setValue.

如果您有许多带有订阅的表单控件,可能有一些最佳实践可以找到有关清理订阅和提高效率的方法.处理/提交最终表单值时,您还可以清除任何不需要的管道转换.

基本示例(另请参阅:original source):

ngOnInit() {
  this.searchField = new FormControl();
  this.searchField.valueChanges
      .subscribe(val => {
        this.searchField.setValue(myPipe.transform(val))
      });
}

摘录延迟清晰度检查:

this.searchField.valueChanges
    .debounceTime(400)
    .distinctUntilChanged()
    .subscribe(term => {
      this.searchField.setValue(myPipe.transform(val))
  });

原创方法……

This answer描述了如何为输入字段创建自定义控件值访问器,该字段在onChange(获取convertTo *自定义函数)和writeValue(获取convertFrom自定义函数)方法中插入自定义时间戳转换函数.

您可能会创建类似的东西(例如,将模板等调整为其他表单输入类型),但用您想要的管道变换方法(可能是两种不同的类型)替换转换函数,以实现您的目标.角度文档或源代码可能有助于进一步的细节.

我看到的另一个建议的方法是在初始表单控件创建期间使用管道,但这似乎不太有用,因为它不会继续应用这些更改,因为用户更改了输入值.它最初会正确显示,但任何操作都会丢失变换过滤,并且表单将按原样提交,而不应用管道变换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读