【发布时间】: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);
});
}
这段代码编译没有问题,当我在taskSelected 上go to definition 时,我最终得到了导出的taskSelected$ 主题。
但是当我运行应用程序时,我会在我的 ResponsiveNavigationComponent.ts 中得到这个:
TypeError:无法读取未定义的属性“过滤器”
所以taskSelected$ 没有在我的ResponsiveNavigationComponent 类中定义。我错过了什么?
【问题讨论】:
-
您的文件是否以错误的顺序加载?
import taskSelected$ = something.TaskHandling.taskSelected$;基本上翻译为var taskSelected$ = something.TaskHandling.taskSelected$;并在到达时执行。 -
嗯,可能是这样,因为看起来我可以将它加载到另一个组件中。明天去看看。
标签: angular typescript rxjs