我在使用 TypeScript 更改 Angular 7 中的全局变量时遇到问题。
我正在使用通过 Restful API 从数据库中收集 JSON 数据的服务
服务范围 :
export class myService {
constructor(private client : HttpClient) { }
dossierSubject = new Subject();
private dossiers : any[];
getExtract(){
this.client.get<any[]>('http://localhost:9090/dossiers')
.subscribe(
(response) => {
console.log("Data acquisition in progress");
this.dossiers = response;
this.emitDossierSubject();
console.log('Received data ' + response);
},
(error) => {
console.log('Error ! : ' + JSON.stringify(error));
}
);
}
emitDossierSubject(){
this.dossierSubject.next(this.dossiers.slice());
}
我的服务运行良好,我可以得到我正在寻找的数据, 然后我将服务调用到组件中
组件
export class tabComponent implements OnInit {
constructor(private dossierService : myService) { }
private dossierSubscription : Subscription;
private listeDossiers : any[];
ngOnInit() {
this.spinnerStatus = true;
this.dossierService.getExtract();
this.dossierSubscription = this.dossierService.dossierSubject.subscribe(
(dossiers : any[]) => {
this.listeDossiers = dossiers;
console.log(listeDossiers); //dossiers [object][object]
this.spinnerStatus = false;
}
);
console.log('Received data : '+ this.listeDossiers); //undefined
}
拜托,我想知道为什么我的全局变量"listeDossiers"仅在订阅函数中更改。
我尝试为"listeDossier"使用主题,并在更改订阅中的变量后刷新它,但没有成功。
感谢您的帮助。
我相信console.log(listeDossiers);
应该console.log(this.listeDossiers);
subscribe
之外的console.log
将被调用,但不会等待 http 请求,您尝试将其作为ngOnInit()
函数的一部分打印而无需等待,但是只有在您实际分配它subscribe
内