私はAngular4で作業しています。別の機能でhttp取得要求応答を使用しようとしています(私はホテルリストコンポーネントを持っていますが、私はホテルを選択してから別のエンドポイントにリダイレクトします)。 私の考えは、レスポンスを格納できる変数を持つクラスを作成することでした。角4:別のコンポーネントでHTTPリクエスト応答を使用するには?
export class Hotel {
data = {
type: 'hotels',
id: '',
attributes: {
location: '',
name: '',
main_image_src: '',
has_wifi: '',
has_parking: '',
has_pets: '',
has_restaurant: '',
has_bar: '',
has_swimming_pool: '',
has_air_conditioning: '',
has_gym: '',
meal_plan: '',
user_id: '',
booking_id: '',
amount: '',
currency: '',
status: '',
stars: ''
}
};
そして、それがサービスでインスタンス化されています
@Injectable()
export class HotelService {
hotel = new Hotel;
}
サービスがhotelregister・コンポーネントにインポートし、私はそこにレスポンスオブジェクトを保存し、このようにされています。ここでは
getHotelId(id) {
const endpoint = 'https://cake-cup.glitch.me/api/hotels/'+id;
this.hotelregistrationservice.httpRequest(this.hotelservice.hotel,
endpoint, 'get')
.subscribe(
response => {
this.hotelservice.hotel.data = response;
this.router.navigate(['hotels/1'])
},
error => {
console.error(error)
});
}
、私がhotelservice.hotel.dataをログオンすると、正しい応答が得られます。これは私が以下のように修飾子コンポーネントで使用しようとしているものです: import {HotelService} from '../hotel.service';
@Component({
selector: 'app-single-hotel',
templateUrl: './single-hotel.component.html',
styleUrls: ['../../assets/app.component.scss'],
providers: [HotelService]
})
export class SingleHotelComponent implements OnInit {
constructor(
public hotelservice: HotelService,
) {
console.log(this.hotelservice.hotel.data)
}
ngOnInit(
) { }
}
ただし、hotelervice.hotel.dataは未定義です。問題を解決するために助けてください。
から
HotelService
を削除する必要があります。 hotel.data = response; '正しいデータを取得しましたか? – crashはい、hotelregisterコンポーネントではyesです。 – balintd
[OK]を私の答えを確認し、それが動作する場合私に知らせてください – crash