В настоящее время у меня есть служба для динамического запуска модального окна. Проблема заключается в том, что у меня есть переменная типа ApplicationRef
для создания экземпляра моего ModalComponent
, но в поле components
отображается только основной компонент, с помощью которого создается приложение.
Чтобы дать вам представление, вот что у меня есть:
modal.service.ts
@Injectable()
export class ModalService {
public ref: ComponentRef<ModalComponent>;
public component$: Observable<any>;
private componentViewContainer: ViewContainerRef;
constructor(
private componentFactoryResolver: ComponentFactoryResolver,
private applicationRef: ApplicationRef,
private injector: Injector
) { }
public showModal<T>(): Observable<ModalComponent> {
const appInstance = this.applicationRef.components[0].instance;
const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);
this.ref = appInstance.vcr.createComponent(factory);
this.ref.changeDetectorRef.detectChanges();
this.ref.instance._ref = this.ref;
return <Observable<ModalComponent>>modalRef$.asObservable().map((modal: ComponentRef<ModalComponent>) => modal.instance);
}
}
Когда я запускаю this.applicationRef.components
, это только приносит мне один компонент, и он главный. Как я могу получить здесь свой ModalComponent
? В моем app.module.ts
тоже есть:
@NgModule({
declarations: [
AppComponent,
ModalComponent
],
imports: [
ModalModule.forRoot()
],
exports: [
ModalModule
],
providers: [
ModalService,
],
entryComponents: [ModalComponent],
bootstrap: [AppComponent],
})