2017-04-13 14 views
2

Service-GlobalServiceServiceのGetSessionData()メソッドでhttp getを使用し、GetSessionData()からレスポンスをサブスクライブして、モデルクラスであるUserDetails Service-プロミス拒否:UserDetailsのプロバイダはありません! (UserDetailsはModelクラス)

import {Observable} from 'rxjs/Rx'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 
import { UserDetails } from "app/model/UserDetails"; 
@Injectable() 
export class GlobalServiceService { 
    constructor(private lohttp: Http, private loAuthService : AuthService) { } 
GetSessionData(): Observable<UserDetails[]> 
{ 
    return this.lohttp.get('http://localhost:49609/api/Authentication/checkUserSession') 
    .map((res:Response) => res.json() 
    .catch((error:any) => Observable.throw(error.json().error || 'Server 
error')) 
    );  
} 
} 

コンポーネント -

import { GlobalServiceService } from './../services/global-service.service'; 
export class HeaderComponent implements OnInit { 
    lsUserName: string; 
    lsUserDetails:UserDetails[]; 
    constructor(private loAuthService: AuthService,private loGlobalService: 
GlobalServiceService,private userDetails:UserDetails) { } 
    LoadSessionData() 
    { 
    this.loGlobalService.GetSessionData() 
     .subscribe(
        data => this.lsUserDetails = data, 
        err => { console.log(err);} 
        ); 
    } 
ngOnInit() { 
     this.LoadSessionData(); 
    } 
} 

私は新しい角度2に私は理解できない理由その示すエラーIがインポートされている場合でも、以下のように:

1.ERROR Error: No provider for UserDetails! 
    at injectionError (core.es5.js:1232) [angular] 
    ... 
View_AppComponent_0 @ AppComponent.html:2 
proxyClass @ compiler.es5.js:13560 
... 
2. zone.js:569 Unhandled Promise rejection: No provider for UserDetails! ; 

3. Zone: <root> ; Task: Promise.then ; Value: Error: No provider for 
UserDetails! 
    at injectionError (core.es5.js:1232) [angular] 
4.zone.js:571 Error: Uncaught (in promise): Error: No provider for 
UserDetails! 

---> UserDetailsをapp.module.tsのインポートに追加すると、フォールエラーが発生しました

Uncaught Error: Unexpected value 'UserDetails' imported by the module 'AppModule'. Please add a @NgModule annotation. at syntaxError (http://localhost:4200/vendor.bundle.js:44937:34) []

+1

'private userDetails:UserDetails'がモデルクラスであれば、コンストラクタを介して注入することはできません。そのため、エラーが発生しています –

+0

ああ、ありがとうSuraj。私はそれが働いた。 –

+0

質問がもう1つあります。 サービスを介したAPIへの呼び出しコンポーネントが最初に実行され、コンポーネントから直接API取得が2回目に実行されます。 なぜそうですか? APIへの呼び出しをシーケンスすることはできますか? はいの場合、私はそれを何通りできるのか教えてください。 –

答えて

1

UserDetailsモデルなので、コンストラクタに挿入することはできません。 >private userDetails:UserDetailsHeaderComponent -

constructor(private loAuthService: AuthService,private loGlobalService: 
GlobalServiceService,private userDetails:UserDetails) 

これを削除します。

関連する問題