В моем приложении Angular 2 есть компонент, который я использую как экран, а также как диалог / всплывающее окно.
Это мой HTML
<app-dialog [(visible)]="showDialog">
<div>
<ng-template #container>
</ng-template>
</div>
<div *ngIf="!showDialog">
{{removeComponent(popUpComponent)}}
</div>
</app-dialog>
Вот код моего файла TS, в который я добавляю компонент как дочерний ...
this.showDialog = !this.showDialog;
this.popUpComponent = AdmissionIntimationComponent;
this.addComponent(this.popUpComponent);
В моем AdmissionIntimationComponent
я добавляю ссылку на этот компонент, как это в конструкторе;
constructor(private dialogRef: DialogComponent)
Теперь, когда я открываю это AdmissionIntimationComponent
как всплывающее окно, оно прекрасно работает, но когда я открываю это как отдельный экран, я получаю эту ошибку
Ошибка: ошибка (в обещании): ошибка: StaticInjectorError (AppModule) [AdmissionIntimateComponent -> DialogComponent]:
StaticInjectorError (Платформа: ядро) [AdmissionIntimaComponent -> DialogComponent]:
NullInjectorError: Нет поставщика для DialogComponent!
И если я не использую ссылку Dialog
в конструкторе, эта ошибка исчезнет, но я не могу закрыть диалог программным способом.
Есть ли способ устранить эту ошибку или закрыть диалоговое окно программным способом?