Я добавляю класс css
к элементам из службы, но изменения не происходят немедленно. Изменения занимают около секунды, чтобы обновить представление. Мне нужно, чтобы изменения произошли немедленно, без задержек. Я пробовал ApplicaionRef и вызывал this.applicationRef.tick()
в службе, но это не сработало. Я попытался запустить метод сервиса в this.zone.run
в NgZone, но это также не сработало.
@Component({
selector: 'calling',
templateUrl: './calling.component.html',
styleUrls: ['./calling.component.scss']
})
export class CallingComponent {
constructor(private hidingService: HidingService) {}
callHide() {
this.hidingService.hide();
}
}
@Injectable({
providedIn: 'root'
})
export class HidingService {
constructor() {}
hide() {
const elements = document.querySelectorAll('.hideable-field');
elements.forEach(element => {
element.classList.add('hide');
});
}
}
Вот CSS в стилях. css (доступно из всех компонентов) для ссылка, но эта часть работает. Добавление этого класса 'hide' скрывает поле с этим CSS:
.hideable-field {
&.hide {
visibility: hidden !important;
}
}
Если я использую этот скрытый логик c в Компоненте, он работает. Поля скрыты сразу. Если я использую эту скрытую логику c в сервисе, это займет некоторое время.