Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 无法调用其类型缺少调用签名的表达式。类型没有兼容的调用签名2349_Javascript_Typescript_Rxjs - Fatal编程技术网

Javascript 无法调用其类型缺少调用签名的表达式。类型没有兼容的调用签名2349

Javascript 无法调用其类型缺少调用签名的表达式。类型没有兼容的调用签名2349,javascript,typescript,rxjs,Javascript,Typescript,Rxjs,尝试在我的服务中调用getter和setter并获取错误: 无法调用其类型缺少调用签名的表达式。类型“Boolean”没有兼容的呼叫签名2349 toggleNav(): void { this.sidebarService.sidebarStatus.pipe( concatMap((bool: boolean) => this.sidebarService.updateStatus(bool)) ); } 在读了几页关于这个的文章之后,我还没有读到一个

尝试在我的服务中调用getter和setter并获取错误:
无法调用其类型缺少调用签名的表达式。类型“Boolean”没有兼容的呼叫签名2349

toggleNav(): void {
    this.sidebarService.sidebarStatus.pipe(
        concatMap((bool: boolean) => this.sidebarService.updateStatus(bool))
    );
}
在读了几页关于这个的文章之后,我还没有读到一个简单的答案。有人能解释一下这个错误在普通英语中的意思吗

这里是二传手和传接手:

private _sidebarStatus = new BehaviorSubject<boolean>(true);

public get sidebarStatus(): Observable<boolean> {
    return this._sidebarStatus.asObservable();
}
public set updateStatus(bool: boolean) {
    this._sidebarStatus.next(bool);
}
private\u sidebarStatus=新行为主体(true);
public get sidebarStatus():可观察{
返回此项。_sidebarStatus.asObservable();
}
公共集updateStatus(bool:boolean){
这个。_sidebarStatus.next(bool);
}

如果要使用属性(正如您使用
get
/
set
定义的那样),那么您只需在需要设置属性时分配属性,就会自动调用setter

this.sidebarService.sidebarStatus.pipe(
    concatMap((bool: boolean) => this.sidebarService.updateStatus = bool)
);
您遇到的错误是因为编译器将
this.sidebarService.updateStatus
视为布尔字段(应该是这样的,get/set是一个实现细节,属性的行为与任何字段的语法相同),因此您无法调用布尔值

您还可以删除
集合
,然后在尝试调用
updateStatus
时调用它,因为它只是一个常规方法,而不是属性设置程序:

public updateStatus(bool: boolean) {
    this._sidebarStatus.next(bool);
}
this.sidebarService.sidebarStatus.pipe(
    concatMap((bool: boolean) => this.sidebarService.updateStatus(bool)) // ok now
);

在“访问者”标题下,您可以了解更多有关属性访问者的信息

谢谢Titian,这是一个信息性的主题。但它给出了类型为“(bool:boolean)=>void”的
参数不可分配给类型为“(value:boolean,index:number)=>ObservableInput”的参数。类型“void”不能分配给类型“observeInput”。ts(2345)
@TR3B可能
concatMap((bool:boolean)=>{this.sidebarService.updateStatus(bool)})
这是您得到错误的那一行吗?是的,这是错误所在one@TR3B您是否尝试过使用额外的
{}
正如上面的评论一样?@TR3B我没有为此创建一个完整的示例,但我希望它能起作用。。我将返回一个包含的示例