Búsqueda de sitios web

typescript - ¿Cómo puedo controlar un Dropdown de Bootstrap programáticamente (Angular)?


Tengo el siguiente Dropdown en mi Vista, y quiero abrirlo/cerrarlo desde mi clase de TypeScript. ¿Cómo podría hacerlo?

¡Gracias por cualquier ayuda!

 <div ngbDropdown class="d-inline-block">
      <button class="btn" id="cartDropdown" ngbDropdownToggle>Warenkorb<img class="warenkorbNavbar"
          src="../assets/img/shopping-cart.png" /></button>
      <div ngbDropdownMenu aria-labelledby="cartDropdown">

Respuesta #1

Puedes acceder al desplegable desde el archivo TS utilizando @ViewChild().

Agrega una variable de plantilla al ngbDropdown, por ejemplo #dropdown

<div #dropdown ngbDropdown class="d-inline-block">
  <button class="btn btn-outline-primary" id="dropdownBasic1" ngbDropdownToggle>Toggle dropdown
  </button>
  <div ngbDropdownMenu aria-labelledby="dropdownBasic1">
    <button ngbDropdownItem>Action - 1</button>
    <button ngbDropdownItem>Another Action</button>
    <button ngbDropdownItem>Something else is here</button>
  </div>
</div>

Luego usa @ViewChild() en tu archivo de typescript. Luego puedes llamar al método open en el dropdown desde dentro del typescript

@Component({
  selector: 'ngbd-dropdown-basic',
  templateUrl: './dropdown-basic.html',
})
export class NgbdDropdownBasic {
  @ViewChild(NgbDropdown, { static: true })
  public dropdown: NgbDropdown;

  public toggleDropdown(): void {
    this.dropdown.open();
  }
}

Un ejemplo funcional de Stackblitz...

https://stackblitz.com/edit/angular-7vbmva