projects/rebirth-ng/src/lib/modal/modal-content.component.ts
exportAs | modalContent |
selector | re-modal-content |
Properties |
Methods |
|
constructor(modalContentContainer: ViewContainerRef, injector: Injector, componentFactoryResolver: ComponentFactoryResolver)
|
||||||||||||
Parameters :
|
addContent | |||||||||
addContent(options: ModalOptions, dismiss: EventEmitter
|
|||||||||
Type parameters :
|
|||||||||
Parameters :
Returns :
void
|
Private handleResolve | |||||||||
handleResolve(options: ModalOptions, instance: Modal)
|
|||||||||
Parameters :
Returns :
void
|
ngOnDestroy |
ngOnDestroy()
|
Returns :
void
|
modalContentRef |
modalContentRef:
|
Type : ComponentRef<Modal>
|
import {
Component,
ComponentRef,
ViewContainerRef,
Injector,
OnDestroy,
EventEmitter,
ComponentFactoryResolver
} from '@angular/core';
import { ModalOptions } from './modal-options.model';
import { Modal } from './modal.model';
@Component({
selector: 're-modal-content',
template: '',
exportAs: 'modalContent'
})
export class ModalContentComponent implements OnDestroy {
modalContentRef: ComponentRef<Modal>;
constructor(private modalContentContainer: ViewContainerRef, private injector: Injector,
private componentFactoryResolver: ComponentFactoryResolver) {
}
addContent<T>(options: ModalOptions, dismiss: EventEmitter<any>) {
const componentFactoryResolver = options.componentFactoryResolver || this.componentFactoryResolver;
const componentFactory = componentFactoryResolver.resolveComponentFactory(options.component);
this.modalContentRef = this.modalContentContainer
.createComponent(componentFactory, this.modalContentContainer.length, options.injector || this.injector);
const instance: Modal = this.modalContentRef.instance;
instance.dismiss = dismiss;
this.handleResolve(options, instance);
}
ngOnDestroy(): void {
this.modalContentRef.destroy();
}
private handleResolve(options: ModalOptions, instance: Modal) {
const resolve = options.resolve || {};
if (resolve.then) {
resolve.then(data => instance.context = data);
} else if (resolve.subscribe) {
resolve.subscribe(data => instance.context = data);
} else {
instance.context = resolve;
}
}
}