Angular 具有反应形式的角度管道:仅应用于模糊

Angular 具有反应形式的角度管道:仅应用于模糊,angular,pipe,Angular,Pipe,我正在尝试为我的输入应用一个管道,它是用反应式表单构建的 <input nxInput required type='text' [value]="billingLetterForm.get('liabilityPercentage').value | percentage" formControlName='liabilityPercentage' /> 这很好,但是,如何仅在blur事件上应用管道 我找到了线程,但这是针对模板驱动表单的实际解决方案,而不是针对被动表

我正在尝试为我的输入应用一个管道,它是用反应式表单构建的

 <input nxInput required type='text'  [value]="billingLetterForm.get('liabilityPercentage').value | percentage"  formControlName='liabilityPercentage'  />

这很好,但是,如何仅在
blur
事件上应用管道

我找到了线程,但这是针对模板驱动表单的实际解决方案,而不是针对被动表单

 <input nxInput required type='text'  [value]="billingLetterForm.get('liabilityPercentage').value | percentage"  formControlName='liabilityPercentage'  />

我发现的一个解决方法是在
模糊上编写一个自定义函数,并从这里应用管道,但这实际上修改了输入值。我认为这不是一个好的解决方案。对此,任何更干净的解决方案都是如此???

您可以使用该字段中的可观察模糊事件来限制值更新的频率

简单的方法是将字段作为ViewChild添加到父组件。 这允许从事件中创建一个可观察的对象,其中目标是您感兴趣的输入:


类组件与LiabilityptInput{
...
@ViewChild('LiabilityptInput')
责任型输入;
恩戈尼尼特(){
让LiabilityptInputBlur$=Rx.Observable.fromEvent(this.LiabilityptInput,'blur');
此.valueThatChangesOnBlur$=liabilityptInputBlur$
.pipe(map(()=>billingLetterForm.get('liabilityPercentage').value));
}
}
然后您可以在模板中与
async
pipe一起使用它: