ng- bootstrap вызов метода выпадающего из сервиса в angular - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу получить доступ к методам NgbDropdown из сервиса вне компонента. Вот фрагмент шаблона:

<div ngbDropdown #dropDown="ngbDropdown" display="static">
  <a ngbDropdownToggle (click)="$event.preventDefault()" href="#" role="button" id="dropdownMenuButton">
    Actions
  </a>
  <div ngbDropdownMenu aria-labelledby="dropdownManual">
    <button ngbDropdownItem>Action - 1</button>
    <button ngbDropdownItem>Another Action</button>
    <button ngbDropdownItem>Something else is here</button>
  </div>
</div>

В моем компоненте я могу легко получить доступ к методу NgbDropdown, используя ссылку на шаблон. Например:

@ViewChild('dropDown', {static: true}) dropDown: NgbDropdown;
...
...
someMethod() {
  this.dropDown.toggle(); // toggle method from NgbDropdowm.
}

Но в моем случае я должен использовать эту операцию переключения из службы (не в компоненте). Как мне этого добиться?

Мой сервис:

export class Service{
        constructor() {}
        // some operation happened after clicking button from dropdown menu
        doStuff() {
           doSomeOtherStuff();
           ...
           // after completing work I want to close/toggle the dropdown. Not before
           // here will be the code of closing dropdown
         }
    }

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете передать раскрывающийся список методу сервиса

this.myService.doStuff(this.dropDown)

Или объявить переменную в вашем сервисе "dropDown", а в AfterViewInit компонента равную переменной сервиса

ngAfterViewInit()
{
    this.myService.dropDown=this.dropDown
}
...