Ionic 离子Angular :如何在值更改时重新呈现按钮

j0pj023g  于 2022-12-08  发布在  Ionic
关注(0)|答案(1)|浏览(145)

我有以下几点:

<ion-input slot="end" (click)="presentPicker('custom1')" value {{conversion.formatDisplayedTime(dta.custom1)}}" readonly="true" type="text"></ion-input>
        
<ion-icon *ngIf="conversion.checkTimeNotNull(dta.custom1)" 
(click)="appendTotalTime('custom1')" color="success" slot="end" name="checkmark-outline"></ion-icon>

可以看到这个图标有ngIf conversion.formatDisplayTime(),它在页面加载的时候被调用。我想知道当上面输入的值改变了,如何重新呈现它?有办法链接它吗?
谢谢大家

jmp7cifd

jmp7cifd1#

这个问题可能有多种原因,但要摆脱它,并有一个干净的代码,你应该知道一些事情。

绑定一个方法/函数的值是一个错误,当然有例外,事件绑定(如(click)="onClick")是完全正确的。但是像[class]="getClass()"<p> {{getText()}} </p>这样的绑定真的很脏。这是因为angular无法知道函数结果的值何时会改变,所以它会在无限循环中调用它,即使它总是相同的结果。

执行这种绑定的最佳方式是使用一个重要规则强制使用属性:仅在更改输入时更改结果。对于需要可观察值、主题...
在你的例子中,我认为你正在尝试格式化一个日期。格式化tempate而不改变值的最好方法是Angular 管道,特别是Angular DatePipe。如果它不适合你自己的使用,你可以很容易地创建你的自定义管道,有很多教程,这是被动的,因为Angular 将重新计算转换值只在输入改变。
希望这对你有帮助。

相关问题