使用rxjs映射函数可提供错误属性_isScalar

时间:2018-09-25 02:00:47

标签: angular typescript

我对Angle和Typescript还是陌生的,我想通过this tutorial来学习它。教程中有一个处理程序,如下所示:

removeChat(chat: Chat): void {
    this.chats = this.chats.map<Chat[]>(chatsArray => {
        const chatIndex = chatsArray.indexOf(chat);
        chatsArray.splice(chatIndex, 1);

        return chatsArray;
    });
}

但是,本教程有些过时了,因为它认为ofmap是Observable的方法,而不再是这种情况。因此,我尝试通过分别导入它们来修复它。 of运作良好(用于获取模拟数据并将其设置为this.chats)。 map给我带来了问题,可能是因为我对语法没有足够的了解(我精通Javascript,但是打字稿对我来说仍然很新)。所以我尝试了这样的事情

import { map } from 'rxjs/operators';

// later...
removeChat(chat: Chat): void {
    this.chats = map<Chat[], {}>(chatsArray => {
        const chatIndex = chatsArray.indexOf(chat);
        chatsArray.splice(chatIndex, 1);

        return chatsArray;
    });
}   

但是我遇到了这个错误:

  

类型'OperatorFunction'无法分配给类型   “可观察”。类型中缺少属性“ _isScalar”   “ OperatorFunction”。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

目前,尚不知道应该对哪个Observable进行操作。相反,您应该将其与pipe结合使用,如下所示:

  removeChat(chat: Chat): void {
    this.chats = this.chats.pipe(
      map(chatsArray => {
        const chatIndex = chatsArray.indexOf(chat);
        chatsArray.splice(chatIndex, 1);

        return chatsArray;
      }));
  }