可以在反应形式字段上应用管道

时间:2019-12-11 20:36:49

标签: angular angular-pipe

我对管道有疑问: 想象有一个管道被应用到反应形式的领域

[value]="form.get(formControlName).value | pipeName”

第一次将值设置为表单字段时,它可以正常工作。现在,有一个过程正在将模型与表单值同步。如果将表单字段重置为与以前相同的值,则不会调用该管道。

您可能会说-只是不要再次为表单设置相同的值,这是正确的。由于某些限制,很难做到这一点,因此我们需要找到解决方案。

例如:如果视图的值为“ 112”,则管道会将值转换为“ 11 2/4” 当我执行this.form.get(formControlName).setValue(‘112’)时,不应用管道转换,其值保持为'112'

此调用管道将不会执行,并且字段值将保持原始状态,并且不会通过管道逻辑进行转换。

这有意义吗?

[更新#1]

尝试使管道不纯净后,实际上会使它使用相同的输入参数进行调用,但随后将管道转换的结果不应用回模板。

[更新#2]

编辑了我要达到的目标的解释。

3 个答案:

答案 0 :(得分:2)

这很奇怪,因为您应该将表单控件绑定到输入,而不是将表单控件值绑定到输入值:

<input [formControl]="form.get(formControlName)" >

这将使您的输入值与表单控件保持同步,因此在使用反应式表单时,绑定值决不应该做。

如果您确实出于某些原因希望此功能正常工作,请改为执行此操作:

[value]="form.get(formControlName).valueChanges | async | pipeName”

将其作为值流进行处理并异步订阅,将结果馈送到管道中

答案 1 :(得分:0)

我认为是因为您没有更新表单值。 更改值后,请尝试以下操作。

ds.ffill('init').isel(init=-1)

答案 2 :(得分:0)

您应在https://angular.io/guide/pipes#impure-pipes

中使管道不纯为状态
  

Angular在每个组件更改检测周期内执行不纯管道

只需在管道装饰器中将属性pure设置为false