gpt4 book ai didi

Angular : Global variable not changing inside Subscription function

转载 作者:行者123 更新时间:2023-12-05 08:07:14 25 4
gpt4 key购买 nike

我在使用 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());
}

MyService 运行良好,我可以获得我正在寻找的数据,然后我将服务调用到组件中

组件

 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

关于 Angular : Global variable not changing inside Subscription function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com