【问题标题】:Rx subject is undefinedRx 主题未定义
【发布时间】:2018-09-06 14:43:23
【问题描述】:

在这个命名空间中,我导出一个字符串类型的 Rx 主题:

namespace something.TaskHandling {

  export const taskSelected$ = new Rx.Subject<String>();

something.TaskHandling.Overview 命名空间中的TaskListComponent 类中,我有:

public clickListItem() {
  taskSelected$.onNext('responsive-view-filters');
}

something.CustomerService 命名空间中的ResponsiveNavigationComponent 中,我导入主题:

import taskSelected$ = something.TaskHandling.taskSelected$;

我在OnInit 中发起直播:

public $onInit() {
    this.observeTaskUpdates();
}

private observeTaskUpdates(): void {
    taskSelected$
        .filter(classValue => !!classValue)
        .subscribe(classValue => {
            this.toggleView(classValue);
        });
}

这段代码编译没有问题,当我在taskSelectedgo to definition 时,我最终得到了导出的taskSelected$ 主题。

但是当我运行应用程序时,我会在我的 ResponsiveNavigationComponent.ts 中得到这个:

TypeError:无法读取未定义的属性“过滤器”

所以taskSelected$ 没有在我的ResponsiveNavigationComponent 类中定义。我错过了什么?

【问题讨论】:

  • 您的文件是否以错误的顺序加载? import taskSelected$ = something.TaskHandling.taskSelected$; 基本上翻译为var taskSelected$ = something.TaskHandling.taskSelected$; 并在到达时执行。
  • 嗯,可能是这样,因为看起来我可以将它加载到另一个组件中。明天去看看。

标签: angular typescript rxjs


【解决方案1】:

这不是订单问题,我不得不硬引用启动 taskSelected$ 常量的实际文件 > /// &lt;reference path="../TaskHandling/module.ts"/&gt;。不确定这是否是潜在问题的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多