angular - Angular 的一次性属性绑定
问题描述
我有一个复选框,如果当前对象在数组中,我想设置选中的属性,但我只希望该检查发生一次,而不是在更改检测时发生。
<input type="checkbox" [checked]="item | inArray: selectedData" (click)="selectItem($event.target.checked, item)">
我不需要在初始渲染后运行该逻辑的更改检测,因为 selectItem 方法会从数组中添加或删除项目,因此复选框是同步的。我每页可能有数百个这样的复选框,我只需要检查一次。每次单击任何复选框时都为每个复选框触发是一种相当昂贵的方法。
是否有一种一次性绑定方法只发生在渲染而不是更改检测上?
解决方案
也许您可以使用表示初始检查状态的布尔变量而不是使用inArray
管道。
checked: boolean;
constructor(private inArrayPipe: InArrayPipe) {}
ngOnInit() {
this.checked = this.inArrayPipe.transform(this.item, this.selectedData);
}
初始化后该checked
值不会在将来再次更改,因此检查也只发生一次,因为checked
输入没有更改。
推荐阅读
- sql - 从员工表中查找经理 ID
- c# - “context.Resource as AuthorizationFilterContext”在 ASP.NET Core 3.0 中返回 null
- javascript - 如何将 json_encode 返回的对象转换为 javascript 变量
- ios - 暂停/恢复后 iOS UIView 变慢
- javascript - 如何减少具有相似值的数字数组
- c - 识别 C 语法
- javascript - 将 javaScript 对象传递给模态,转换 List
并传递给 JS 不起作用 - html - 敲除在点击文本时切换/展开文本
- android - 如何从 Firebase 数据库中填充 ListView 中的多个 TextView?
- javascript - 未捕获的 ReferenceError:showCurrentPage 未在 HTMLButtonElement.onclick 中定义