Невозможно запустить функции класса внутри определенной функции - PullRequest
0 голосов
/ 16 апреля 2020

Я использую внутри своего шаблона HTML для пользовательского компонента:

<foo ... (click)="doSth(foo)" ...></foo>

Затем в контроллере я вызываю функцию, принадлежащую классу этого конкретного объекта

class Foo {
      ...

      getWhatever(){
          ...
      }
}
doSth(foo: Foo) {
     foo.getWhatever();
     ....

Во время компиляции моя IDE ни на что не жалуется. Однако во время выполнения, когда я явно заставляю эту функцию выполняться, я получаю:

FooListComponent.html:2 ERROR TypeError: foo.getWhatever is not a function

Выполняя отладку, я ясно вижу, что это не экземпляр Foo, а просто обычный объект. Если я пытаюсь выполнить приведение или что-то подобное, ничто не может помочь мне извлечь его как экземпляр Foo.

Я предполагаю, что он обрабатывается как объект, полученный из шаблона, если я сделаю что-то вроде Instantiation Loader или подобное?

1 Ответ

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

на основе комментариев, вам нужно отобразить свой ответ в экземпляр класса для доступа к методам класса:

this.http.get('foourl').pipe(map(fooResponse => new Foo(fooResponse))

это должно заставить ваш код работать, но сомнительно, что это отличное решение для проектирования в общем, использование классов и методов классов приводит к большим трудностям в среде javascript, так как строковое преобразование и анализ теряют все функциональные возможности вашего класса. Я склонен предпочитать функциональные методы / стиль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...