Ionic3 ngClass绑定样式需要点击才能触发吗?

发布于 2022-09-07 20:02:22 字数 1387 浏览 26 评论 0

原本打算在Ionic3的<ion-content>中使用ionScroll事件改变<ion-header>的样式,但是事件出发了样式却没变。但是如果我在header上添加一个按钮,点击一下按钮样式就变了。

相关代码

HTML

<ion-header [ngClass]="{'transparent-header': transparentHeader}">
  <ion-navbar color="light">
    <ion-title></ion-title>
    <ion-buttons end>
      <button icon-button (click)="goToEdit()">编辑</button>
    </ion-buttons>
  </ion-navbar>
</ion-header>
<ion-content (ionScroll)="scrollEvent($event)"></ion-content>

TypeScript

transparentHeader: boolean = true;

scrollEvent(ionContent) {
  let opacity = 1 - (150 - ionContent.scrollTop) / 150;
  this.transparentHeader =  opacity >= 1 ? false : true;
}

goToEdit() {
  console.log('Go to edit.')
}

原本期望页面向下滑动一定距离,header的transparent-header样式就会自动移除,但现在必须要向下滑动以后,点一下编辑按钮才能移除,而编辑按钮里面只有一句控制台输出的语句。

图片

没有向下滑动的效果如下图:

clipboard.png

向下滑动但是样式没有改变的效果如下图:

clipboard.png

点击按钮以后的效果如下图:

clipboard.png

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

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

发布评论

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

评论(1

何以笙箫默 2022-09-14 20:02:22

刚刚看官方文档,找到了解决办法。

Scroll events happen outside of Angular's Zones. This is for performance reasons. So if you're trying to bind a value to any scroll event, it will need to be wrapped in a zone.run()

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