是否有任何使用 @HostListener 来改变方向的窗口事件,就像我们有 @HostListener("window:scroll", ['$event']) 进行滚动一样?

Posted

技术标签:

【中文标题】是否有任何使用 @HostListener 来改变方向的窗口事件,就像我们有 @HostListener("window:scroll", [\'$event\']) 进行滚动一样? [复制]【英文标题】:Is there any window event for orientation change using @HostListener like we have @HostListener("window:scroll", ['$event']) for scrolling? [duplicate]是否有任何使用 @HostListener 来改变方向的窗口事件,就像我们有 @HostListener("window:scroll", ['$event']) 进行滚动一样? [复制] 【发布时间】:2019-07-12 06:30:38 【问题描述】:

我想检测方向变化,以检测我是在纵向模式还是横向模式下查看我的应用程序。那么有没有像方向变化这样的事件,我可以在组件的主机监听器中传递来检测方向变化?

P.S - 有些人说这是重复的问题。我不想要普通的 java 脚本方式,我想要有角度的方式来检测方向变化。

【问题讨论】:

window:resize? 我特别需要 @HostListener 的事件来改变方向 如果您使用的是 Angular,那么我建议您应该使用官方的 Angular CDK。您需要的是布局模块。 material.angular.io/cdk/layout/overview @SplitterAlex - 这个家伙不需要为原生浏览器事件引入整个 Angular CDK... 【参考方案1】:

From MDN;您可以使用window:orientationchange 来检测设备的方向何时发生了变化。

@HostListener('window:orientationchange', ['$event'])
onOrientationChange(event) 
  console.log('orientationChanged');

这是一个短片,可以在 Chrome 开发工具中看到这一点:https://streamable.com/o2ilm

【讨论】:

精彩活动?,不过这个只支持手机?根据mdn我觉得window:resize会更好 我看不到如何将方向应用于桌面? 你可以使用chrome开发工具测试一下 @malbarmawi - 他专门要求进行方向检测......而不是调整大小。 Chome 开发工具允许您模拟设备并更改测试方向。 谢谢@AndrewHill 我实际上实现了正确的事件。我只是不知道如何在浏览器上触发事件。它就像一个魅力!

以上是关于是否有任何使用 @HostListener 来改变方向的窗口事件,就像我们有 @HostListener("window:scroll", ['$event']) 进行滚动一样? 的主要内容,如果未能解决你的问题,请参考以下文章

Angular 使用带有 @HostListener 的指令来更新 ReactiveForm 的输入值是将输入设置为 ngValid 而不是 ngInvalid

Angular 8 @HostListener('window:scroll', []) 不工作

Angular - HostListener 指令和传递值

Angular 2. 删除 @Hostlistener()

如何使用 @HostListener('window:beforeunload') 调用方法?

如何获取 *focus* HostListener 的 keyCode