Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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 TS2345:参数 ;of ;类型 ';() =&燃气轮机;棱角分明_Javascript_Angular_Typescript - Fatal编程技术网

Javascript TS2345:参数 ;of ;类型 ';() =&燃气轮机;棱角分明

Javascript TS2345:参数 ;of ;类型 ';() =&燃气轮机;棱角分明,javascript,angular,typescript,Javascript,Angular,Typescript,如何解决此问题: TS2345: Argument of type '() => Observable<R | undefined>' is not assignable to parameter of type '() => void | Subscribable<never> | Subscribable<R> | PromiseLike<R> | InteropObservable<R>'.   Type 'Obser

如何解决此问题:

TS2345: Argument of type '() => Observable<R | undefined>' is not assignable to parameter of type '() => void | Subscribable<never> | Subscribable<R> | PromiseLike<R> | InteropObservable<R>'.   Type 'Observable<R | undefined>' is not assignable to type 'void | Subscribable<never> | Subscribable<R> | PromiseLike<R> | InteropObservable<R>'.     Type 'Observable<R | undefined>' is not assignable to type 'InteropObservable<R>'.       Property '[Symbol.observable]' is missing in type 'Observable<R| undefined>

使用Angular
6.1.3

确定,因此我找到了解决方案:

  public open<T, D, R>(
    templateOrComponentRef: TemplateRef<T> | ComponentType<T>,
    config: MatDialogConfig<D>,
  ): Observable<R | undefined> {
    const ref = this.create<T, D, R>(templateOrComponentRef, config);
    return ref.afterClosed();
  }
公开(
templateOrComponentRef:TemplateRef | ComponentType,
config:MatDialogConfig,
):可见{
const ref=this.create(templateOrComponentRef,config);
返回参考afterClosed();
}

如您所见,我删除了
defer()
,以匹配返回类型。因为一次只能打开一个对话框,所以这应该是正常的。

乍一看,
ref.afterClosed()
的返回类型似乎与预期的
类型不匹配()=>void | Subscribable | Subscribable | PromiseLike | interopobbservable'
您不应返回可能是
void
Subscribable
PromiseLike
的内容,或者
InteropObservable
相反,您应该返回类型可能为
Observable
Observable
的结果。这就是错误消息的意思。我想,您如何解决它取决于您的应用程序。谢谢,但错误一点也不明确,我根本看不出我的实现有什么问题。(是的,我以前在谷歌上搜索并访问过github,在这里没有帮助)
谢谢,但错误一点也不明确
我以前从未见过,而且我很清楚
我根本看不出我的实现有什么问题
您的函数返回一种类型的响应。它们与预期的不匹配,或者需要其他类型的响应,或者您需要以某种方式转换它们。在Java中,这相当于试图将某个
List
传递给采用
Set
或其他不兼容类型的方法。
  public create<T, D, R>(
    templateOrComponentRef: TemplateRef<T> | ComponentType<T>,
    config: MatDialogConfig<D>,
  ): MatDialogRef<T, R> {
    return this.dialog.open<T, D>(templateOrComponentRef, config);
  }
  public open<T, D, R>(
    templateOrComponentRef: TemplateRef<T> | ComponentType<T>,
    config: MatDialogConfig<D>,
  ): Observable<R | undefined> {
    const ref = this.create<T, D, R>(templateOrComponentRef, config);
    return ref.afterClosed();
  }