首页 > 解决方案 > 在 Angular 8 指令中使用点击事件的问题

问题描述

我是 Angular 的新手,我有一个指令,可以显示 dicom 图像并使用cornerstoneJs 库使用基石工具(缩放和长度)。图像已显示,但问题是当我想将每个工具与两个输入单选相关联时,用户可以选择并选择要使用的工具。为此,我创建了 2 个函数,每个函数激活一个与每个输入单选相关联的基石工具,但问题是当我单击两个输入单选时仅执行第一个函数。

基石.directive.ts :

 @Output() myClick1: EventEmitter<any> = new EventEmitter();
 @Output() myClick2: EventEmitter<any> = new EventEmitter();

 @HostListener('click', ['$event'])

 onClick1(event) {      
      cornerstoneTools.addTool(cornerstoneTools[`${'Length'}Tool`]);
      cornerstoneTools.setToolActive('Length', { mouseButtonMask: 1 } ); 
      this.myClick1;
 }

 @HostListener('click', ['$event'])

 onClick2(event) {
      cornerstoneTools.addTool(cornerstoneTools[`${'Zoom'}Tool`]);
      cornerstoneTools.setToolActive('Zoom', { mouseButtonMask: 1 } ); 
      this.myClick2;
 }

查看器.html:

<input  type="radio" class="left" name="tool" (myClick1)="onClick1($event)"  appCornerstone> Length
  
<input  type="radio" class="left" name="tool" (myClick2)="onClick2($event))" appCornerstone> Zoom

问题是当我选择长度工具时,它被启用,但是当我选择缩放时,长度工具窗台启用并且缩放工具未激活。

非常感谢你 !

标签: angular8directive

解决方案


看看这个问题https://github.com/cornerstonejs/cornerstoneTools/issues/1018。我没有尝试过,但我认为这对你有用。

 @Output() myClick1: EventEmitter<any> = new EventEmitter();
 @Output() myClick2: EventEmitter<any> = new EventEmitter();

 @HostListener('click', ['$event'])

 onClick1(event) {      
      cornerstoneTools.addTool(cornerstoneTools[`${'Length'}Tool`]);
      cornerstoneTools.setToolActive('Length', { mouseButtonMask: 1 } ); 
      cornerstoneTools.setToolDisabled('Zoom');  
      this.myClick1;
 }

 @HostListener('click', ['$event'])

 onClick2(event) {
      cornerstoneTools.addTool(cornerstoneTools[`${'Zoom'}Tool`]);
      cornerstoneTools.setToolActive('Zoom', { mouseButtonMask: 1 } ); 
      cornerstoneTools.setToolDisabled('Length');
      this.myClick2;
 }

推荐阅读