私はユーザーのジオロケーションを取得して、それを別のAPI呼び出しで使用しようとしています。私が次のことをすると、このエラーが出ます。サービスは 'getLegislatorByLocation'で、geoSuccessメソッドにあります。メソッド内のサービスを使用する
EXCEPTION: TypeError: Cannot read property 'getLegislatorByLocation' of undefined
export class LocalLegislatorsComponent implements OnInit {
constructor(private _legislatorService: LegislatorService) {
}
ngOnInit(): void {
this.geoFindUser();
}
geoFindUser(): void {
if (!navigator.geolocation) {
this.geoSupport = false;
return;
}
navigator.geolocation.getCurrentPosition(this.geoSuccess, this.geoError);
}
geoSuccess(position): void {
this.geoSupport = true;
this.latitude = position.coords.latitude;
this.longitude = position.coords.longitude;
this._legislatorService.getLegislatorByLocation(this.latitude, this.longitude)
.subscribe(legislators => this.legislators = legislators, error => this.errorMessage = <any>error);
}
geoError(): void {
console.log('Unable to retrieve location');
this.geoSupport = false;
}
}
私が何とかする方法にサービスを注入する必要がありますか?あなたはそれが動作するはず
navigator.geolocation.getCurrentPosition((pos) => this.geoSuccess(pos), this.geoError);
にそれを変更した場合
だろうあなたはコンストラクタに 'はconsole.log(_legislatorServiceを)'追加し、それを印刷し何を投稿してみていただけますか?あなたはコンストラクタを使って注入する以外何もする必要はありません。それ以外の何かが間違っています。 'LegislatorService'をどこのプロバイダにも追加しましたか? –
'LegislatorService'は、あなたが書いた場合、' @Ijectable'デコレータを必要とし、あなたのブートストラップ呼び出しであなたのコンポーネントのプロバイダやプロバイダ配列に追加する必要があります。 – rinukkusu
@Ajectableデコレータがあります。 "ngOnInit()"で呼び出すとうまくいきます。geoSuccess()メソッドに移動したときに問題が発生しました。 – dave