我正在Angular2中创建一个自定义管道,同时编写过滤器代码,我得到以下构建错误:
TS2322: Build:Type'() => string'不能赋值给Type' string'
请查看下面的示例代码:
import { PipeTransform, Pipe } from 'angular2/core';
import { IProduct } from './products';
@Pipe({
name: 'productFilter'
})
export class ProductFilterPipe implements PipeTransform {
transform(value: IProduct[], args: string[]): IProduct[] {
let filter: string = args[0].toLocaleLowerCase ? args[0].toLocaleLowerCase : null;
return filter ? value.filter((product: IProduct) =>
product.productName.toLocaleLowerCase().indexOf(filter) != -1) : value;
}
}
上面的错误出现在下面一行代码中:
let filter:
我是打字新手,有人能帮我解决这个问题吗?
需要在函数toLocaleLowerCase的调用中添加括号。换句话说,你应该这样写:toLocaleLowerCase()
因为当你提供没有括号的函数名时,你并没有真正调用该函数。您的意思是希望变量过滤器等于函数本身,而不是函数调用后返回的值。