import { Directive, ViewContainerRef,TemplateRef,OnInit,Input,OnDestroy } from '@angular/core'; import { Store} from '@ngrx/store'; import * as appCommonReducer from '../../reducers/app-common.reducer' import { IPackages } from '../../models/package'; import { Observable, Subscription } from 'rxjs'; import { skip } from 'rxjs/operators'; import {OAuthService } from 'angular-oauth2-oidc'; import { IUser } from '../../models/user'; @Directive({ selector: '[fm-hasclaim]', }) export class HasClaimDirective implements OnInit{ @Input('fm-hasclaim') claim:string; constructor(private templateRef$: TemplateRef,private viewContainerRef$: ViewContainerRef,private store$: Store) { } private user$:Observable = this.store$.select(appCommonReducer.SelectGetUser); private hasView = false; ngOnInit() { this.user$.subscribe((user) => { if (user && user.claims[this.claim]) { this.viewContainerRef$.createEmbeddedView(this.templateRef$); this.hasView=true; } else if (this.hasView) { this.viewContainerRef$.clear(); this.hasView = false; } }); } }