Angular: связывайте наблюдаемые и оцениваемые результаты - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу иметь структуру типа

MyStruc {
   action2Execute:any; // see #q3

   constructor(coll: CollectionServices) {
    // see #q1
   }
}

и иметь класс ServiceClass, например

MyServiceClass {
  constructor(public http: HttpClient) { }

  myHTTPRequest(id:number):Observable<boolean>{
     this.http.get<boolean>('call/my/webservice/'+id)
  }
}

, и класс Controller, например,

MyControllerClass {

  constructor(private coll: CollectionServices) {}
  ...
  execHTTP() {
     new MyStruc(coll).action2Execute.apply(1);
  }

}

Теперь моя цельчтобы связать action2Exectue с методом myHTTPRequest, вызовите его и обработайте результаты.У меня две проблемы с этим

  1. Если я установлю action2Execute как this.action2Execute=coll.myHTTPRequest, то у меня возникнет проблема, когда я вызываю его в MyControllerClass.#execHTTP() Я получаю сообщение об ошибке: TypeError: Cannot read property 'get' of undefined ==> http - это undefined

  2. Моя другая проблема заключается в том, что при использовании apply я не получаю результаты из наблюдаемого, то есть из HTTP-запроса.

  3. Какой тип должен иметь action2Exectue в классе MyStruc?

1 Ответ

0 голосов
/ 07 февраля 2019

Я понял, как объявить это:

MyStruc {
   action2Execute:((id:number) => Observable<any>);

   constructor(coll: CollectionServices) {
     // to bind it to the Service ...
     this.action2Execute=coll.myHTTPRequest.bind(coll);
   }
}

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

MyControllerClass {
...
 constructor(private coll: CollectionServices) {}
  ...
  execHTTP() {
     new MyStruc(coll).action2Execute(1).subscribe(res => console.log(res));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...