我想在订阅参数之外使用变量

Posted

技术标签:

【中文标题】我想在订阅参数之外使用变量【英文标题】:I want to use the variable outside the subscribe parameter 【发布时间】:2020-12-18 18:27:01 【问题描述】:

我正在使用 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 页面上的任何地方都使用this.key,就像在其他函数上一样,我想在页面上全局声明它。我该怎么做?

【问题讨论】:

【参考方案1】:

创建全局变量的一种简单方法是将其分配给窗口,而不是 this.key = data.key 你会得到 window.key = data.key

然而,这种方法更像是一种 hack,而不是真正的解决方案

更好的解决方案是拥有某种单例键/值注册表,然后您可以将其注入到您需要的每个组件中

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'));



【讨论】:

以上是关于我想在订阅参数之外使用变量的主要内容,如果未能解决你的问题,请参考以下文章

jmeter随笔(23)--在csv中维护变量参数

Paypal 订阅按钮 - 添加自定义值

python数据流作业在部署后使用requirements_file参数后不接受来自pubsub订阅的消息

如何在 Angular 2 轮询服务中访问 .subscribe 之外的值

将事件传递给指令并订阅它

Android 应用内结算订阅状态更改回调