私はhttpからデータを取得しており、配列内の同じサービス内に格納しています。サービスに格納されている非同期データを取得する方法は?
export class UserService {
myusers: User[];
constructor(private http: HttpClient) {}
getUsers() {
return this.http.get<User[]>('https://randomuser.me/api/results=5')
.subscribe(data => { this.myusers = data['results']}); }
}
myusersをcomponent.tsでコンソール化すると、「未定義」と表示されます。
export class UserComponent implements OnInit {
constructor(private service: UserService) { }
ngOnInit() {
this.service.getUsers();
console.log(this.service.myusers); //undefined
}
}
this.service.myusers
にはどのようにアクセスできますか?いけないのは、サービスのmyusers配列ではないコンポーネントの配列にデータを格納するソリューションを提案してください。
を使用して配列から観測を返すことができます。オブザーバブルと約束を読んでください。あなたのデータは非同期です。 。呼び出すときにサービスが値を返すとは期待できません。したがって、サービスでObservableを返し、コンポーネント内でそのサービスにサブスクライブする必要があります。 – Robus
したがって、データ(配列)を保守する方法はありませんか?しかし、この配列を他のコンポーネントでhttp.get()を再度呼び出さなくても使うことができるので、これは良いアプローチだと思います。 – Alturistic