import { Injectable, OnInit, Renderer2, RendererFactory2, NgZone } from '@angular/core'; export interface AttentionElement { idOrEl: any; type?:string;// 计划默认 debounce class?: string; } @Injectable({ providedIn: 'root' }) export class AttentionService implements OnInit { private renderer: Renderer2 constructor(renderFac: RendererFactory2, public ngZone: NgZone) { this.renderer = renderFac.createRenderer(null, null); } catchAttention(els: AttentionElement[], timer = 600) { if (els && els.length > 0) { let attentionEls = []; for (let k = 0; k < els.length; k++) { var attentionEl; if (typeof els[k].idOrEl == 'string') { attentionEl = document.getElementById(els[k].idOrEl); } else { attentionEl = els[k].idOrEl; } if (attentionEl) { attentionEls.push(attentionEl); this.renderer.addClass(attentionEl, 'f-catch-attention-debounce'); } } // 移除class this.ngZone.runOutsideAngular(() => { setTimeout(() => { for (let m = 0; m < attentionEls.length; m++) { this.renderer.removeClass(attentionEls[m], 'f-catch-attention-debounce'); } }, timer); }); } } ngOnInit() { } }