Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我无法访问主题的管道方法?_Javascript_Angular_Typescript_Rxjs_Observable - Fatal编程技术网

Javascript 为什么我无法访问主题的管道方法?

Javascript 为什么我无法访问主题的管道方法?,javascript,angular,typescript,rxjs,observable,Javascript,Angular,Typescript,Rxjs,Observable,当将Subject对象传递给我创建的方法时,我认为Subject foo$应该可以访问pipe()方法,因为Subject的类定义扩展了Observable,但我在运行时无法访问pipe()方法。代码编译得很好,VSCode中没有问题 我曾尝试在.pipe()之前使用foo$.asObservable(),但在运行时我被告知“foo$.asObservable不是函数”时,也会出现类似的问题。我还尝试将foo$转换为可观察对象或主题,因为在这个方法中记录foo$的类型时,只显示“object”

当将Subject对象传递给我创建的方法时,我认为Subject foo$应该可以访问pipe()方法,因为Subject的类定义扩展了Observable,但我在运行时无法访问pipe()方法。代码编译得很好,VSCode中没有问题

我曾尝试在.pipe()之前使用foo$.asObservable(),但在运行时我被告知“foo$.asObservable不是函数”时,也会出现类似的问题。我还尝试将foo$转换为可观察对象或主题,因为在这个方法中记录foo$的类型时,只显示“object”

当在管道前面使用of(foo$)来创建可观察值时,这确实有效,但我不再有权访问下面代码中需要的u.change或u.list值。我曾尝试使用此实现将这些值存储到其他地方,但我无法想出任何方法

ngOnInit() {
    super.init();
    const config = super.getCurrentConfig();
    this.model.updateProperties([['graphicName', '/' + config.graphicName]]);
    this.model.updateProperties([['inputs', config.inputs ? config.inputs : []], ['identifier', config.identifer ? config.identifier : '']]);
    this.systemMessageBusService.push(new SystemMessage(SystemMessageAction.GET_THE_FOO, name));
    this.subscriptions.push(
        this.model
        .getProperty('foo$')
        .pipe(filterNotNulls(), distinctUntilChanged())
        .subscribe(_ => this.subscriptionUpdated(_))
    );
}

private subscriptionUpdated(foo$: Subject<ListValue<BarFoo>>) {
    this.model.updateProperty('foosSubscription', foo$
        .pipe(filterNotNulls())
        .subscribe(_ => {
            if (!_.change) {
                this.myClass.doThis(_.list);
            } else {
                this.myClass.doThat(_.change);
            }
        })
    );
}


updateProperty<K extends keyof T>(propertyName: K, value: any) {
    const currentValue: T = Object.assign({}, this.getCurrentValue());
    currentValue[propertyName] = value;
    this.update(currentValue);
}
ngOnInit(){
super.init();
const config=super.getCurrentConfig();
this.model.updateProperties([['graphicName','/'+config.graphicName]]);
this.model.updateProperties([['inputs',config.inputs?config.inputs:[]],['identifier',config.identifer?config.identifier:“”]];
this.systemMessageBusService.push(新系统消息(SystemMessageAction.GET_THE_FOO,name));
这个是.subscriptions.push(
这个模型
.getProperty('foo$')
.pipe(filterNotNulls(),distinctUntilChanged())
.subscribe(=>this.subscribionUpdated())
);
}
私人订阅更新(foo$:主题){
this.model.updateProperty('foosSubscription',foo$
.pipe(filterNotNulls())
.subscribe(=>{
如果(!\更改){
this.myClass.doThis(u.list);
}否则{
this.myClass.doThat(u.change);
}
})
);
}
updateProperty(propertyName:K,value:any){
const currentValue:T=Object.assign({},this.getCurrentValue());
currentValue[propertyName]=值;
更新(当前值);
}
预期结果:我能够在我的主题上使用.pipe方法


实际结果:“foo$.pipe不是函数”

您的
getProperty
调用没有返回
主题(或任何其他
可观察的
-类似,因此其余的代码无法工作。请尝试在不使用
订阅
调用的情况下简单地返回
管道
的结果。

您的
getProperty
调用没有返回
主题
(或任何其他
可观察的
-类似,因此其余的代码无法工作。尝试只返回
管道
的结果,而不使用
订阅
调用。

尝试在pipe@EduardoVargas我也尝试过,我收到了一个类似的问题“ERROR:TypeError…foo$.asObservable不是函数”请发布updateProperty好吗?您正在将
订阅
对象作为
传递给
updateProperty()
。这是因为该函数中的代码似乎与订阅无关。为项目编制索引的体面IDE会将此作为错误下划线。请尝试在pipe@EduardoVargas我也尝试过,我收到了类似的问题,其中“错误:TypeError…foo$.asObservable不是函数“请发布updateProperty好吗?您正在将
订阅
对象作为
传递给
updateProperty()
。这是您的意图,因为该函数中的代码似乎与订阅没有任何关系。一个为您的项目编制了索引的像样的IDE将作为错误在下面划线。