2017-03-27 38 views
1

私は2番めの新規で、同様の質問に対する適切な回答が見つかりませんでした。'subscribe'プロパティは、angle-cliの 'void'型には存在しません。

angle-cliの 'void'型にプロパティ 'subscribe'が存在しません。 rxjsからサブスクリプションをインポートしようとしましたが、そのライブラリが見つかりませんでした。

Error Image

この問題を解決する助けてください。私がそのサービスを呼んでいる私のサービスとコンポーネントコードを以下で見つけてください。

// ******************************* 
 

 
// login.service.ts 
 

 
// ******************************* 
 

 
import { Injectable } from '@angular/core'; 
 
import { Http, Response } from '@angular/http'; 
 
import { Observable } from 'rxjs/observable'; 
 
import 'rxjs/add/operator/map'; 
 
import 'rxjs/add/operator/catch'; 
 
import 'rxjs/add/operator/throw'; 
 

 
@Injectable() 
 
export class LoginService { 
 

 
    constructor(private http: Http) { } 
 

 
    getLoginData(){ 
 
    this.http.get('./json/login.json') 
 
     .map((result: Response) => result.json()) 
 
     .catch(this.getError); 
 
    } 
 

 
    private getError(error: Response): Observable<any>{ 
 
     console.log(error); 
 
     return Observable.throw(error.json() || 'Server Issue'); 
 
    } 
 

 
} 
 

 
// ******************************* 
 

 
// login.component.ts 
 

 
// ******************************* 
 

 

 
import { Component } from '@angular/core'; 
 
import { Router } from '@angular/router'; 
 
import { LoginService } from '../login.service'; 
 

 
@Component({ 
 
    selector: 'app-login', 
 
    templateUrl: './login.component.html', 
 
    styleUrls: ['./login.component.css'], 
 
    providers: [LoginService] 
 
}) 
 
export class LoginComponent { 
 
usernameModel: string; 
 
passwordModel: string; 
 
validLogin: Boolean; 
 
    constructor(private router: Router, private loginService: LoginService) { } 
 

 
    homeNav(){ 
 
    if(this.usernameModel === 'jay' && this.passwordModel === 'Jay'){ 
 
     this.validLogin = true; 
 
     this.router.navigate(['/home']); 
 
    } 
 
    else{ 
 
     this.validLogin = false; 
 
     console.log('Login Error'); 
 
    } 
 

 
this.loginService.getLoginData() 
 
    .subscribe(
 
    data => console.log(data) 
 
); 
 

 
    } 
 

 

 

 
}

答えて

5

あなたgetLoginData機能で、観察を返されていません。 returnキーワードを追加し、必要に応じて、署名に戻り値の型を追加します。

getLoginData(): Observable<any>{ 
    return this.http.get('./json/login.json') 
     .map((result: Response) => result.json()) 
     .catch(this.getError); 
    } 
0

あなたはhttpコールを返し、常に

getLoginData(): Observable<any> { 
    return this.http.get('./json/login.json') 
    .map((result: Response) => result.json()) 
    .catch(this.getError); 
} 
あらかじめごIDEは、これらのエラーで拾う持っているtypehintingを追加してくださいする必要があります
+0

ありがとうございます。今、私は 'モジュールが見つかりません:エラー:' rxjs/add/operator/throw 'を解決できません...という新しい問題を発見しました....私はrxjs/operatorフォルダをチェックしています。私はそれを外部に追加する必要がありますか? – Jay

+1

正しいインポートは 'import 'rxjs/add/observable/throw''です(これは観測可能であり、演算子ではありません)。しかし、それらのものは不要です、私はあなたがそこに必要な唯一のものは 'map'インポートがあると信じています – PierreDuc

+0

ありがとう – Jay

関連する問題