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) []
'private userDetails:UserDetails'がモデルクラスであれば、コンストラクタを介して注入することはできません。そのため、エラーが発生しています –
ああ、ありがとうSuraj。私はそれが働いた。 –
質問がもう1つあります。 サービスを介したAPIへの呼び出しコンポーネントが最初に実行され、コンポーネントから直接API取得が2回目に実行されます。 なぜそうですか? APIへの呼び出しをシーケンスすることはできますか? はいの場合、私はそれを何通りできるのか教えてください。 –