当前位置: 首页 > 知识库问答 >
问题:

如何将观察者变量作为参数传递?

庞鸿骞
2023-03-14

组件具有变量applicationObs作为观察者:

export class OrderDetailsComponent implements OnInit {
    public applicationObs: Observable<ApplicationResponse>;
    
     public getSections(): SidebarMenuItem[] {
        const fabricApplicationSidebar = fabricApplicationSidebarMenu(this.application); // Here 
     }
}

应用程序不是观察者,而是应用程序响应时,如何将applicationObs传递到fabricApplicationSidebarMenu()

如何传递异步数据作为函数中的变量?


共有2个答案

叶智
2023-03-14

你想做什么?像这样的?

this.applicationObs.subscribe(
(applicationResponse: ApplicationResponse) => {
   const fabricApplicationSidebar = fabricApplicationSidebarMenu(applicationResponse); // Here 
});
符学
2023-03-14

我建议你换一种方式来考虑,你真正想做的是在你的可观察管道上添加一个新函数。所以我会这样做:

export class OrderDetailsComponent implements OnInit {
    public applicationObs: Observable<ApplicationResponse>;
    
     public getSections(): Observable<SidebarMenuItem[]> {
        return applicationObs.pipe(
          map(m => fabricApplicationSidebarMenu(m))
        );

     }
}

我们在现有的observable上添加了一个新管道并返回它。这仍然是异步的,所以它本身不做任何事情。要获得这些部分,您仍然需要订阅生成的可观察内容:

this.getSections().subscribe((s: SidebarMenuItem[]) => {

});

如果愿意,您还可以潜在地使用async管道。看这里

请注意,上述操作将触发ApplicationOB以及订阅时的任何fabricApplicationSidebarMenu操作。这可能是可取的,也可能不是可取的,这取决于您的计划和这些功能的作用。

 类似资料:
  • 问题内容: 我想知道是否有什么办法可以在程序运行时观察变量值的变化。当然不使用调试器,我想以 编程方式进行 。例如: 因此,在运行时,如果在我的项目中任何类的任何方法中修改了此value 事件,则应调用该事件。 问题答案: 您需要用一个类替换该类型,该类将在值更改时调用您的侦听器。您可能想忽略未实际更改的值的设置。 例如 您可以使用字节码注入执行此替换,但是更改原始代码非常简单。 一种替代方法是监

  • 使用RxJS如何在观察者上传递新属性?所以基本上我希望道具“customProp”可以被观察到 添加更多的信息-所以基本上,我试图创建一个冷可观察的,其中制片人需要一个道具,应该来自订户 添加用法信息--coldObservable是DB连接函数,customProp是需要在DB上执行的查询

  • 问题内容: 我正在使用最后一个selenium,一些网站随机弹出消息,停止正常的测试过程 我在想的是,我需要做IAlert as Observer模式,以捕获警报并接受它,并从其停止处理弹出窗口的点继续进行测试。 IAlert代码: 主要问题是如何执行它,或者是否有更好的方法来处理随机弹出窗口? 谢谢 问题答案: 由于在尝试执行其他操作时弹出窗口很重要,因此我建议采用以下方法:EventFirin

  • 问题内容: 我正在用JavaScript准备一些变量(在我的特定情况下,我想获取GPS位置): 我想通过下面的命令按钮将它们发送到我的托管bean: 如何将JavaScript中的变量和变量发送到JSF托管bean操作方法? 问题答案: 让JS以相同的形式将它们设置为隐藏的输入值。 命令按钮操作方法可以按通常方式将它们作为bean属性进行访问。

  • 我想通过下面的命令按钮将它们发送到我的托管bean: 我如何将和变量从JavaScript发送到JSF托管bean动作方法?

  • 问题内容: 我试图将AngularJS变量作为onclick()中的参数值来调用javascript函数。谁能指导我该怎么做? 我的代码: 问题答案: 您应该使用ng-click,没有理由使用onclick,因为angular为您提供了此功能 然后,您应该将函数移到AngularJS Controller中,并将其绑定到作用域 如果您绝对需要使用onclick来调用外部函数,则可以在您的范围内将函