在Angular项目中,你可以使用一个共享的服务来实现鼠标移动事件只在当前的tab页中产生。

首先,创建一个名为MouseService的共享服务:

import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class MouseService {
  private mouseMoveSubject: Subject<MouseEvent> = new Subject<MouseEvent>();

  constructor() { }

  getMouseMoveObservable(): Observable<MouseEvent> {
    return this.mouseMoveSubject.asObservable();
  }

  emitMouseMoveEvent(event: MouseEvent) {
    this.mouseMoveSubject.next(event);
  }
}

然后,在你的每个tab页组件中注入MouseService,并在鼠标移动事件中调用emitMouseMoveEvent方法:

import { Component, OnInit, HostListener } from '@angular/core';
import { MouseService } from 'path/to/mouse.service';

@Component({
  selector: 'app-tab1',
  templateUrl: './tab1.component.html',
  styleUrls: ['./tab1.component.css']
})
export class Tab1Component implements OnInit {

  constructor(private mouseService: MouseService) { }

  ngOnInit() {
  }

  @HostListener('mousemove', ['$event'])
  onMouseMove(event: MouseEvent) {
    this.mouseService.emitMouseMoveEvent(event);
  }
}

最后,在你的其他tab页组件中,订阅MouseService的getMouseMoveObservable方法来获取鼠标移动事件:

import { Component, OnInit } from '@angular/core';
import { MouseService } from 'path/to/mouse.service';

@Component({
  selector: 'app-tab2',
  templateUrl: './tab2.component.html',
  styleUrls: ['./tab2.component.css']
})
export class Tab2Component implements OnInit {

  constructor(private mouseService: MouseService) { }

  ngOnInit() {
    this.mouseService.getMouseMoveObservable().subscribe((event: MouseEvent) => {
      // 处理鼠标移动事件
    });
  }
}

这样,只有当前的tab页中的鼠标移动事件才会被订阅到,其他的tab页不会接收到鼠标移动事件

angular项目中在当前tab页中鼠标移动产生的事件信息不让其他的tab页也产生事件怎么处理

原文地址: https://www.cveoy.top/t/topic/hHkS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录