'add and remove 'active' on scrolling is not working in navbar

I have created an angular application in that I have to create 'on scrolling the navbar option should be change' and I written code for that in 'app.component.html' and I have created some components then given id's for section tag within those section tags I have written components selectors.

app.component.html

<!-- navbar -->
        <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
          <li class="nav-item active">
            <a class="nav-link" aria-current="page" href="#home">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#about">About Us</a>
          </li>3
          <li class="nav-item">
            <a class="nav-link" href="#service_area">Service Area</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#studies">Innovation</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#industries">Industries</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#contact">Contact Us</a>
          </li>
        </ul>
  <!-- navbar end -->

<section id="home">
  <app-home ></app-home>
</section>

<section id="services">
  <app-services></app-services>
</section>

<section id="about">
  <app-about></app-about>
</section>

<section id="hiring">
  <app-hiring></app-hiring>
</section>

<section id="service_area">
  <app-service-area></app-service-area>
</section>

<section id="studies">
  <app-case-studies></app-case-studies>
</section>

<section>
  <app-industries id="industries"></app-industries>
</section>

<section id="techs">
  <app-techs></app-techs>
</section>

<section id="we_work">
  <app-we-work></app-we-work>
</section>

<section id="contact">
  <app-contact></app-contact>
</section>

script

<!-- js -->
<script>

    let section = document.querySelectorAll('section');
        let lists = document.querySelectorAll('.navbar-nav .nav-item');
        function activeLink(li) {
            lists.forEach((item) => item.classList.remove('active'));
            li.classList.add('active');
        }
        lists.forEach((item) =>
            item.addEventListener('click', function(){
                activeLink(this);
            }));

        window.onscroll = () => {
            section.forEach(sec => {
                let top = window.scrollY;
                let offset = sec.offsetTop;
                let height = sec.offsetHeight;
                let id = sec.getAttribute('id');

                if (top >= offset && top < offset + height) {
                    const target = document.querySelector(`[href='#${id}']`).parentElement;
                    activeLink(target);
                }
            })
        };
</script>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source