import { VisibilityRule } from './models/VisibilityRule'; import { VisibilityRulesContext } from './models/VisibilityRulesContext'; import { FormGroup } from '@angular/forms'; import { Injectable } from '@angular/core'; import { Rule } from '../models/Rule' @Injectable() export class VisibilityRulesService { public formGroup: FormGroup; public visibilityRuleContext: VisibilityRulesContext; public isElementVisible(pathKey: string,id:string) { let visibilityRule = this.visibilityRuleContext.getRulesFromKey(id); if(!visibilityRule) return true; return this.checkElementVisibility(visibilityRule); } public checkElementVisibility(visibilityRule: VisibilityRule): boolean { let sourceVisibilityRules = visibilityRule.sourceVisibilityRules; for (let i = 0; i < sourceVisibilityRules.length; i++) { let sourceVisibilityRule = sourceVisibilityRules[i]; if (sourceVisibilityRule.sourceControlValue != this.formGroup.get(this.getParentPath(sourceVisibilityRule.sourceControlId)).value) return false; } return true; } public buildVisibilityRules(item: Array) { this.visibilityRuleContext = new VisibilityRulesContext(); this.visibilityRuleContext.buildVisibilityRuleContext(item); } private getParentPath(parentId:string):string{ return ''; } }