Angular:订阅函数内部的全局变量不变

时间:2019-04-26 10:20:38

标签: angular typescript global-variables observable subscription

使用TypeScript在Angular 7中更改全局变量时遇到问题。

我正在使用通过Restful API从数据库收集JSON数据的服务

服务:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

MyService运行良好,可以获取所需的数据, 然后我将服务称为组件

组件

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());
  }

请,我想知道为什么仅在订阅函数内部更改全局变量“ listeDossiers”。

我尝试对“ listeDossier”使用一个主题,并在更改订阅中的变量后刷新它,而没有成功。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我相信console.log(listeDossiers);应该是console.log(this.listeDossiers);

console.log外部的subscribe将被调用,但不会等待http请求,您尝试不等待而将其作为ngOnInit()函数的一部分进行打印,但是它是仅在您实际分配的subscribe