Angular mat-checkbox [checked] 属性在动态分配值时会多次触发

发布于 2025-01-17 07:37:55 字数 255 浏览 0 评论 0 原文

<ul>
<li *ngFor=let choice of checkboxlist.options>

<mat-checkbox [checked]=isChecked(choice) > <mat-checkbox>
<li>
<ul>

在 ts 文件中,我有基于某些逻辑的 isChecked 函数,它返回 true 或 false (这很好用),但函数会多次触发。

<ul>
<li *ngFor=let choice of checkboxlist.options>

<mat-checkbox [checked]=isChecked(choice) > <mat-checkbox>
<li>
<ul>

in ts file I have function for isChecked based on some logic it returns true or false (this works fine) but the functions is get triggering multiple times.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮坠入山谷 2025-01-24 07:37:55

checkboxlist.options 中的每个选项都会触发一次该函数吗?

当您更新 checkboxlist.options 列表中的单个选择时,它会为每个

  • 重新渲染整个 DOM,您可以帮助它成为一个聪明一点。
  • 对于循环几个选项的小型应用程序来说,这不是什么大问题。但是,这是一个很好的做法,如果您的列表很大,那么您希望在 ngFor 中使用 trackBy

    如果您使用 trackBy 那么您的列表将仅更新已更改的列表项。

    有很多参考资料可以帮助您比我更好地构建 trackBy 方法,这是另一个 StackOverflow 问题 关于它。

    祝你好运!

    Is the function getting triggered once for each option in your checkboxlist.options?

    When you update a single selection in your checkboxlist.options list, and it is re-rendering the whole DOM for each <li *ngFor, you can help it be a little smarter.

    For small applications where your looping over a handful of options this is not a big deal. However, it is good practice and if your list is large then you want to use trackBy in your ngFor

    If you use trackBy then your list will ONLY update the list items that are changed.

    There's a lot of references out there that will help you build your trackBy method better than I will, here is a good starting point for another StackOverflow question about it.

    Good luck!

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文