import { style } from '@angular/animations'; import { Directive, Injectable, Input, EventEmitter, Output, ElementRef, OnInit, OnDestroy, ChangeDetectorRef, HostBinding, Renderer2, RendererStyleFlags2 } from '@angular/core'; import { ViewChangeService } from './view-change.service'; //视图区域 @Directive({ selector: '[fViewItem]' }) export class FarrisViewItemDirective implements OnInit, OnDestroy { /**使用方式 *
视图的内容区域
*/ // 当前项的标记 @Input('fViewItem') viewItemType: string; // 当前项所属的组 @Input('fViewGroupId') fViewGroupId: string = 'default'; constructor( private elementRef: ElementRef, private viewChangeService: ViewChangeService, private render: Renderer2 ) { } public ngOnInit(): void { // 追加到服务中统一管理 this.viewChangeService.addViewItem(this.viewItemType, this.fViewGroupId); // this.viewChangeService.getChangeCurrentViewId().subscribe((currentViewType: any): void => { if (!currentViewType) return; if (!currentViewType[this.fViewGroupId]) { return; } else if (currentViewType[this.fViewGroupId] == this.viewItemType) { // this.render.setStyle(this.elementRef.nativeElement,'display',''); this.render.removeClass(this.elementRef.nativeElement, 'f-viewchange-view-none'); } else { // this.render.setStyle(this.elementRef.nativeElement,'display','none',0); this.render.addClass(this.elementRef.nativeElement, 'f-viewchange-view-none'); } }); } public ngOnDestroy(): void { this.viewChangeService.removeViewItem(this.viewItemType, this.fViewGroupId); } }