(点击)事件不适用于 IOS 设备 - angular 10 个应用

(click) event is not working only on IOS devices - angular 10 app

我注意到我的按钮在 IOS 设备上不起作用,似乎没有调用点击事件。在 windows、android、Linux 上一切正常。由于我无权访问任何 mac 我试图在 browserStack 上调试它,每次我尝试单击按钮时都会收到此错误:

ERROR TypeError: undefined is not an object (evaluating 't.path[4]')

我可能完全错了,但我认为这可能与按钮内部的 SVG 矩形有关(我将其用作进度条),在我访问它的矩形加载事件中找到它的长度。 Maby 它被称为“太早”,因此它无法正确访问 rect。以前我使用 ngAfterViewInit 和里面的 setTimeout 来管理相同的效果。

  <rect
    #rect
    width="96"
    height="96"
    rx="8"
    fill="none"
    stroke-width="4"
    [ngStyle]="{
      'stroke-dasharray': strokeDasharray,
      'stroke-dashoffset': strokeDashoffset
    }"
    (load)="getRectLength()"
  />
  getRectLength() {
    this.length = this.rect.nativeElement.getTotalLength();
    this.strokeDasharray = this.length;
  }

代码:
https://github.com/mateuszkornecki/chess-clock/tree/master/src

现场演示:
https://mateuszkornecki.github.io/chess-clock/settings

重现步骤:
只需点击带有计数器的大按钮之一,点击后它就会开始计数。

我在几台 IOS 设备上对其进行了测试,无论 IOS 版本如何,它都不适用于所有人。这是我用 Angular 制作的第一个项目,所以我有可能犯了一个简单的错误。任何帮助将不胜感激!

我找到问题的根源了。我试图在点击事件中使用 event.path 数组。看起来它在 Safari 上不可用。我使用 event.composedPath 而不是 event.path 解决了这个问题

参考文献: https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath