UNPKG

first-npm-package-nicule

Version:

This isi first npm package

34 lines (30 loc) 1.21 kB
import { Directive, EmbeddedViewRef, Inject, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core'; import { HypermediaForm } from '../components'; import { PARENT_FORM } from '../components/parent-form'; import { Subscription } from 'rxjs'; @Directive({ selector: '[hmFormValue]' }) export class FormValueDirective implements OnDestroy { @Input() hmFormValue; embeddedViewRef: EmbeddedViewRef<{ $implicit: any }>; subscription: Subscription; constructor(@Inject(PARENT_FORM) form: HypermediaForm, viewContainerRef: ViewContainerRef, templateRef: TemplateRef<{ $implicit: any }>) { this.subscription = form.valueChanged .asObservable() .subscribe(value => { if (!this.embeddedViewRef) { this.embeddedViewRef = viewContainerRef.createEmbeddedView(templateRef, { $implicit: value }); } else { this.embeddedViewRef.context.$implicit = value; } }); } ngOnDestroy(): void { if (this.subscription) { this.subscription.unsubscribe(); } } }