2016-09-15 4 views
1

Я создаю пользовательские трубы в Angular2 при написании кода для фильтра Я получаю следующее сообщение об ошибке сборки:машинопись Ошибка с angular2: строка не может быть назначен

TS2322: Build:Type'() => string' is not assignable to 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: 

Я новичок в typescrip t может кто-нибудь помочь мне с исправлением этой проблемы?

+0

попробуйте использовать только 'let filter = args [0] .toLocaleLowerCase? ..........' – micronyks

ответ

2

Вам нужно добавить круглые скобки для вызова функции toLocaleLowerCase. Другими словами, вы должны сделать это: toLocaleLowerCase()

Потому что вы не вызываете функцию, когда вы предоставляете ее имя без скобок. Вы говорите, что хотите, чтобы переменный фильтр был равен самой функции, а не по значению, возвращаемому функцией после его вызова.

+0

Спасибо Абдул ... –