小编pfe*_*eon的帖子

`e:TouchEvent`的`@ HostListener`导致Firefox崩溃,"ReferenceError:未定义TouchEvent".

使用@HostListener显式键入的事件参数TouchEvent,会导致Firefox崩溃,并显示以下错误消息:

ReferenceError:未定义TouchEvent.

一个例子:

@HostListener('touchstart', ['$event']) // or 'touchend', 'touchmove'
onTouchStart(e: TouchEvent): void {}
Run Code Online (Sandbox Code Playgroud)

我可以想出几种方法来自行预防:

  • 使用e: TouchEvent | anye: any(或根本不指定类型)
  • 使用 elRef.nativeElement.addEventListener('touchstart', (e: TouchEvent) => {})
  • 使用 Observable.fromEvent(elRef.nativeElement, 'touchstart').subscribe((e: TouchEvent) => {})

但是使用any| any看起来像是一个黑客,而另外两个选项没有利用框架.是否有另一种更好,更安全的方法来处理这个问题,如果没有,哪种选择更可取?

(也许有人也可以解释Angular实际在做什么以及为什么只有当事件被明确地输入为TouchEvent... 时才会发生此错误)


编辑:这个问题仍然存在于Angular 7中.编辑:这个问题在Angular 6中已得到明确解决.

firefox touch-event angular

8
推荐指数
1
解决办法
589
查看次数

无法从节点模块使用 SASS mixin 构建 Angular 库

设置:带有库的 Angular 9 工作区、一个使用 CDK 的测试应用程序和故事书_overlay.scss.scss文件中包含@use.

.storybook/
node_modules/
projects/
- library/
  - src/
    - lib/
      - component/
        component.scss // `@use`s `_overlay.scss`
  ng-package.json
- test-app/
angular.json
Run Code Online (Sandbox Code Playgroud)

问题:@use "~@angular/cdk/overlay"在测试应用程序和故事书编译中使用覆盖 sass 混合但 ng-packagr 找不到_overlay.scss.

ERROR: Can't find stylesheet to import.
  ?
2 ? @use "~@angular/cdk/overlay";
  ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ?
  projects\library\src\lib\component\component.scss 2:1  root stylesheet
An unhandled exception occurred: Can't find stylesheet to import.
Run Code Online (Sandbox Code Playgroud)

解决方法:

  • 可以添加node_modules/tong-package.json"styleIncludePaths": "["../../node_modules"]"数组并像这样导入覆盖混合,@use …

sass angular ng-packagr

8
推荐指数
0
解决办法
565
查看次数

标签 统计

angular ×2

firefox ×1

ng-packagr ×1

sass ×1

touch-event ×1