这个问题可能是由异步的原因导致的,我们可以使用rxjs中的Observable来解决。具体的解决方法如下:
首先,在调用api的方法中,创建一个Observable对象并返回它。
在这个Observable对象中,订阅api的返回值,并将该值传递给Subject对象。
在需要获取api返回值的方法中,订阅之前创建的Observable对象,并从Subject中获取返回值。
代码示例:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ApiService {
apiData: Subject;
constructor(private http: HttpClient) {
this.apiData = new Subject();
}
getData(): Observable {
this.http.get('').subscribe(data => {
this.apiData.next(data);
});
return this.apiData.asObservable();
}
}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
apiData: any;
constructor(private apiService: ApiService) {}
ngOnInit() {
this.apiData = this.apiService.getData();
this.apiData.subscribe(data => {
console.log(data);
});
}
}