В итоге я просто добавил новый тег CSS ID в корневой файл CSS (styles.css).Таким образом, я могу ссылаться на тэг ID из любой точки моего приложения, чтобы применить его ко всему в моем проекте.
Я управляю переключением элемента CSS с помощью переменной, таким образом я могу выполнить логику, чтобы переключить серый / отключить.Серый / отключение начинается при нажатии кнопки и заканчивается, когда сохранение завершено из базы данных.Пользователь не может редактировать любое поле на экране и вынужден ждать завершения сохранения, прежде чем изменять какие-либо другие поля.
Вот документация, которая помогла мне достичь этого: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_overlay
Вот что я добавил в styles.css на уровне корневого проекта:
#overlay {
position: fixed;
display: none;
width: 100%;
height: 100%;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0,0,0,0.5);
z-index: 2;
cursor: pointer;
}
Вот мой HTMLмоего компонента, где я применил стиль (я добавил это прямо в нижней части моего HTML-файла):
<div id="overlay">
<span id="nav" *ngIf="saveInProgress">
<div class="spinner" style="display: block; position: fixed">
</div>
</span>
<span id="nav" *ngIf="saveInProgress">
<div class="submit-message" style="display: block; color: #FFFFFF; position: fixed; left: 49.7%; top: 54.5%;">
Saving...
</div>
</span>
</div>
Вот моя логика в соответствующем компоненте TS:
save(): Observable<any> {
if(...) {
this.saveInProgress = true;
document.getElementById("overlay").style.display = "block";
}
....some more logic....
if(...){
this.saveInProgress = false;
document.getElementById("overlay").style.display = "none";
}
}