Reputation: 2609
I've created a directive to prevent scroll when certain components are visible (angular 12), here's my code:
import { DOCUMENT } from '@angular/common';
import { Directive, HostListener, Inject, Renderer2 } from '@angular/core';
@Directive({
selector: '[appRemoveScroll]'
})
export class RemoveScrollDirective {
constructor(
@Inject(DOCUMENT) private document: Document,
private renderer: Renderer2,
) { }
@HostListener('visible', ['$event'])
toggleNoScroll(visible: boolean) {
console.log("called", visible)
if (visible) {
this.renderer.addClass(this.document.body, 'no-scroll');
} else {
this.renderer.removeClass(this.document.body, 'no-scroll');
}
}
}
I'm then adding this directive to a component which gets toggled using *ngIf
:
<div *ngIf="displayProductLayover" id="product-layover" appRemoveScroll>
<app-layover [heading]="layoverHeading">
// More code here
I'm not getting any errors but this is not working, I'm not getting any console statements. What am I doing wrong here?
Upvotes: 1
Views: 870
Reputation: 12357
DOM elements like div
don't emit a visible
event, so @HostListener('visible', ['$event'])
won't be called
Upvotes: 1