首页 > 解决方案 > Angular 的一次性属性绑定

问题描述

我有一个复选框,如果当前对象在数组中,我想设置选中的属性,但我只希望该检查发生一次,而不是在更改检测时发生。

<input type="checkbox" [checked]="item | inArray: selectedData" (click)="selectItem($event.target.checked, item)">

我不需要在初始渲染后运行该逻辑的更改检测,因为 selectItem 方法会从数组中添加或删除项目,因此复选框是同步的。我每页可能有数百个这样的复选框,我只需要检查一次。每次单击任何复选框时都为每个复选框触发是一种相当昂贵的方法。

是否有一种一次性绑定方法只发生在渲染而不是更改检测上?

标签: angular

解决方案


也许您可以使用表示初始检查状态的布尔变量而不是使用inArray管道。

checked: boolean;

constructor(private inArrayPipe: InArrayPipe) {}

ngOnInit() {
   this.checked = this.inArrayPipe.transform(this.item, this.selectedData);
}

初始化后该checked值不会在将来再次更改,因此检查也只发生一次,因为checked输入没有更改。


推荐阅读