类型为'void'的'this'上下文不能赋值给'Observable <string>'类型的方法'this'

时间:2018-03-07 15:03:54

标签: angular angular-material

我在angular的自动完成示例中遇到此错误。这是代码:

ngOnInit() {
      this.filteredOptions = this.myControl.valueChanges
          .pipe(
            startWith(''),
            map(val => this.filter(val))
          );
}

错误是在startWith上产生的。我在第二个val也遇到了错误。它说:

  

类型'{}'的参数不能分配给'string'类型的参数

功能是:

 filter(val: string): string[] {
    return this.options.filter(option =>
      option.toLowerCase().indexOf(val.toLowerCase()) === 0);
  }

提示: 有混合控制或进口的东西。我不确定,但是当我创建一个新组件时,一切正常。

2 个答案:

答案 0 :(得分:32)

我遇到了同样的问题,结果发现我是从错误的目录导入map和startWith。

import {map, startWith} from "rxjs/operators";

使用它来导入map和startWith,它应该可以工作和编译。

答案 1 :(得分:0)

我的情况是,我通过从 <field name="fetched_users" invisible="True"/> <xpath expr="//field[@name='user_id']" position="attributes"> <attribute name="domain"> [('id','in',fetched_users)] </attribute> </xpath> 自动填充而不是从 take(1) 自动填充来自动加载 rxjs/compat/take,并发现了这个问题。不是那么明显的事情:)