web-dev-qa-db-ja.com

エラーTS4053:エクスポートされたクラスからのパブリックメソッドの戻り値の型は、「監視可能」という名前を持っているか、使用しています

ionic 2&angular 2、アプリを実行しようとするとこのエラーが発生します。チェックする別のプロジェクトを作成します。と同じ問題、私は本当にこの問題で混乱しました。

error in photo

これは私のサービスコードです

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Storage} from '@ionic/storage';
import {NavController} from "ionic-angular";


/*
  Generated class for the MyService provider.

  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
  for more info on providers and Angular 2 DI.
*/
@Injectable()
export class MyService {
  public local :Storage;
  public getsession : any;
  constructor(private http: Http, private navCtrl : NavController) {
    this.local = new Storage();
    console.log("my-service page")
  }

  postLogin(data){
    let link = "http://adirzoari.16mb.com/login.php";
    return this.http.post(link,data)
        .map(res => res.json())
  }

  checkToken(){
    return this.getsession =this.local.get('token');
  }

}
22
Adir Zoari

これを回答として追加するだけなので、他のSO同じ問題に直面しているユーザーを助けることができます。

@ sudheer-kb のように、その問題を解決するには、explicitlyObservableクラス:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
// ...
import { Observable } from "rxjs/Observable"; // <- add this import

そして、メソッドに明示的な戻り値の型を指定します(コメントをありがとう @ ruffin ):

postLogin(data): Observable<any> {
    // ...
}
56
sebaferreras

私は同様の問題を抱えていました、それはメソッドの戻り値のタイプに関連するようです。私のために働いたのは、たとえば次のように、メソッドの宣言の直後に「:any」を追加することです:

get(url) : any {
  //code
}

私はそれが良い習慣だとは思わないが、時々それは良い修正になる可能性がある。

14
user3516766