Как привязать параметр функции Angular 2 к родительской области видимости? - PullRequest
0 голосов
/ 19 сентября 2019

Моя проблема заключается в следующем: у меня есть компонент typeahead, который получает параметры раскрывающегося списка от метода внедренного сервиса, который я хочу передать.Я мог бы просто скопировать службу в компонент typeahead и получить данные там, но в этом случае мой компонент не смог бы получить какой-либо метод службы от какой-либо службы.Итак, что я хочу сделать, это:

Родитель:

<app-typeahead [typeaheadService]="myservice.getFunction"></app-typeahead>

Ребенок:

  @Input() public typeaheadService: (string) => (Observable<any[]>);

Но затем, когда я пытаюсь запустить его, я получаю "это".get - это не функция ", поэтому я предполагаю, что я теряю родительскую область, я уже пытался передать ее как [typeaheadService]="myservice.getFunction.bind(this)", но она тоже не работает.Пожалуйста, не предлагайте отправлять событие при keyup, а затем передавать результат детям по параметру, потому что я хочу делать что-то после того, как получу результаты от подписки, или если результаты пустые, и я могу сделать это, только если обработаю результатыот детей.Благодаря.

1 Ответ

1 голос
/ 19 сентября 2019

Вы действительно хотите, чтобы сервисная функция была привязана к сервису:

[typeaheadService]="myservice.getFunction.bind(myservice)"

Кроме того, рассмотрите возможность сохранения связанной функции в переменной в вашем компоненте, иначе angular создаст новуювключите каждый цикл обнаружения изменений и обновите ваш typeaheadService вход.

шаблон:

[typeaheadService]="typeaheadCallback"

и компонент:

public readonly typeaheadCallback = myservice.getFunction.bind(myservice);

...