我对管道有疑问: 想象有一个管道被应用到反应形式的领域
[value]="form.get(formControlName).value | pipeName”
第一次将值设置为表单字段时,它可以正常工作。现在,有一个过程正在将模型与表单值同步。如果将表单字段重置为与以前相同的值,则不会调用该管道。
您可能会说-只是不要再次为表单设置相同的值,这是正确的。由于某些限制,很难做到这一点,因此我们需要找到解决方案。
例如:如果视图的值为“ 112”,则管道会将值转换为“ 11 2/4”
当我执行this.form.get(formControlName).setValue(‘112’)
时,不应用管道转换,其值保持为'112'
此调用管道将不会执行,并且字段值将保持原始状态,并且不会通过管道逻辑进行转换。
这有意义吗?
[更新#1]
尝试使管道不纯净后,实际上会使它使用相同的输入参数进行调用,但随后将管道转换的结果不应用回模板。
[更新#2]
编辑了我要达到的目标的解释。
答案 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