Вы можете создать сервис, который будет отслеживать, какие опции показывать.
Сервис может выглядеть примерно так:
@Injectable()
export class OptionsVisibilityService {
checklistOptionsVisible = new BehaviorSubject<boolean>(false);
otherOptionsVisible = new BehaviorSubject<boolean>(false);
}
В ваших компонентах вы можете обновить состояние в событиях жизненного цикла OnInit и OnDestroy:
@Component({/** ... */})
export class ChecklistComponent implements OnInit, OnDestroy {
constructor(private optionsVisibility: OptionsVisibilityService) {
}
ngOnInit() {
this.optionsVisibility.checklistOptionsVisible.next(true);
}
ngOnDestroy() {
this.optionsVisibility.checklistOptionsVisible.next(false);
}
}
Сделать службу видимости доступной в компоненте, где отображаются параметры:
export class OptionsButtonComponent {
checklist$: Observable<boolean>;
other$: Observable<boolean>;
constructor(optionsVisibility: OptionsVisibilityService) {
this.checklist$ = optionsVisibility.checklistOptionsVisible.asObservable();
this.other$ = optionsVisibility.otherOptionsVisible.asObservable();
}
}
Затем используйте его в шаблоне:
<div *ngIf="checklist$ | async">
<!-- Show checklist options -->
</div>
<div *ngIf="other$ | async">
<!-- Show other options -->
</div>