Typescript 我想在subscribe参数之外使用变量

Typescript 我想在subscribe参数之外使用变量,typescript,ionic-framework,angular-ui-router,ionic4,Typescript,Ionic Framework,Angular Ui Router,Ionic4,我使用的是Ionic 4,我想在文件的任何地方都使用这个变量。这对我很重要 我正在使用firebase,我想将一个页面的一个变量传递到另一个页面。这个问题解决了。但我想在第二页的每一部分都使用这个变量 //first page code joinRoom(key) { this.router.navigate(['chat', {key: key}]); } //second page code constructor(public activateroute: ActivatedRou

我使用的是Ionic 4,我想在文件的任何地方都使用这个变量。这对我很重要

我正在使用firebase,我想将一个页面的一个变量传递到另一个页面。这个问题解决了。但我想在第二页的每一部分都使用这个变量

//first page code
joinRoom(key) {
   this.router.navigate(['chat', {key: key}]);
}

//second page code
constructor(public activateroute: ActivatedRoute){
   this.activateroute.params.subscribe((data: any) => {
     console.log(data);
     this.key = data.key;
  });
}

我想像在其他函数中一样在.ts页的任何地方使用
这个.key
,我想在第页全局声明它。我该怎么做呢?

创建全局变量的一个简单方法是将其分配到窗口,而不是
this.key=data.key
您将拥有
window.key=data.key

然而,这种方法与其说是真正的解决方案,不如说是一种黑客手段

更好的解决方案是使用某种类型的单例键/值注册表,然后将其注入到所需的每个组件中

constructor(public activateroute: ActivatedRoute, private configRegistry: CustomRegistry){
   this.activateroute.params.subscribe((data: any) => {
     console.log(data);

     // this.key = data.key;
     configRegistry.set('key', data.key);
  });
}

elsewhere in another file
constructor(private configRegistry: CustomRegistry){
   console.log(configRegistry.get('key'));
}