【问题标题】:Angular 7 Type 'void' is not assignable to type 'ObservableInput<{}>'Angular 7 类型“void”不可分配给类型“ObservableInput<{}>”
【发布时间】:2019-05-31 00:32:22
【问题描述】:

我不知道为什么会出现这个错误

  getByURL(url: string): any {
    return this.apiService.get(url).pipe(map(data => data));
  }

  getByNextPage(): Observable<any> {
    const url = 'url';
    this.getByURL(url).pipe(
      expand(data => {
        console.log(data);
      })
    );
  }

我在有 expand(data => ... 的行出现了这个错误。我想使用 expand(),所以我可以递归调用下一个 api。

Type 'void' is not assignable to type 'ObservableInput<{}>'

任何提示将不胜感激。谢谢

【问题讨论】:

  • 尝试添加一个return语句到get​​ByNextPage() b/c没有返回任何东西,
  • @artemisian 谢谢。 stackoverflow.com/questions/56398014/…。我在这里有另一个与此相关的问题。不知道你是否可以快速浏览一下。我被困在那里。谢谢

标签: javascript angular typescript rxjs ngrx


【解决方案1】:

您需要检查数据变量的数据类型并在您的方法中返回数据。

getByNextPage(): Observable<any> {
    const url = 'url';
    this.getByURL(url).pipe(
      expand(data => {
        console.log(data);
        return data;
      })
    );
  }

【讨论】:

【解决方案2】:
expand(data => {
  console.log(data);
})

你的函数不返回任何东西,因此是 void。你需要返回一个 observable。

【讨论】:

    【解决方案3】:

    那是因为你使用不好的 expand() 操作符。如果你查看文档,expand() 操作符必须返回一个 Observable,而你什么也没有返回。

    即使您返回“数据”变量,错误仍然会因为该规则而持续存在。

    Check this documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 2020-10-01
      • 2021-12-10
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 2021-12-05
      相关资源
      最近更新 更多