Допустим, у меня есть 2 компонента, aComponent
и bComponent
. У меня они перенаправлены внутри AppComponent
<app-a>
<app-b>
И у меня есть услуга myService
с методом .trigger()
.
Я хочу показать только aComponent
, но всякий раз, когда я вызываю myService.trigger()
из другой части кода, он переключается и показывает bComponent
. Это идеальная реализация, до которой я не могу добраться.
Вопрос: Можно ли так сделать? И если не самое лучшее, ближайшее решение.
Единственное рабочее решение, которое у меня получилось:
Я добавил .trigger()
внутри AppComponent
export class AppComponent {
title = 'spa';
show: boolean = false;
trigger() {
this.show = true;
}
}
И визуализировал компоненты вот так:
<div *ngIf="!show; else show">
<app-a></app-a>
</div>
<ng-template #show>
<app-b></app-b>
</ng-template>
Затем всякий раз, когда я хочу вызвать переключение, я добавляю экземпляр приложения в конструктор и вызываю его метод:
export class AnotherComponent implements OnInit {
constructor(
private app: AppComponent
) {}
ngOnInit(): void {
this.app.trigger();
}
}
Хотя он работает довольно хорошо, Сам вижу, что это грязное решение. Компоненты не предназначены для использования внутри других компонентов, но Сервисы предназначены.