169 похожих чатов

Добрый день. Необходимо фильтровать список по title или text. Для переключения

фильтрации есть кнопки.

На https://angular-ivy-j2cqv4.stackblitz.io фильтрация работает без проблем, как по title, так и по text. Но в коде на компе ошибка в строке:
"return post[field].toLocaleLowerCase().includes(search.toLocaleLowerCase()) - ругается на post[field]"

Ссылка на код https://stackblitz.com/edit/angular-ivy-j2cqv4?file=src/app/pipes/filter.pipe.ts

Подскажите, пожалуйста, что делаю не так?

12 ответов

15 просмотров

А как ругается? post[field]?.toLocaleLowerCase() либо (post as any)[field]?.toLocaleLowerCase() либо более красиво (post as Record<string, string>)[field]?.toLocaleLowerCase() Должно решить проблему

а что если типизировать field в аргументах пайпа: field: 'title'|'text' = 'title' ?

как вариант в пайпе можно ‘field: any’ заменить на “field: keyof Post”

Marisha- Автор вопроса
ⓞⓝⓔⓜⓐⓝⓣⓞⓞ
А как ругается? post[field]?.toLocaleLowerCase() ...

Текст ошибки: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Post'. No index signature with a parameter of type 'string' was found on type 'Post' Вариант с post[field]?.toLocaleLowerCase() - ошибка сохраняется (post as any)[field]?.toLocaleLowerCase() - работает (post as Record<string, string>)[field]?.toLocaleLowerCase() - работает Спасибо огромное 🙂

Marisha
Текст ошибки: Element implicitly has an 'any' type...

c keyof вариант вероятнее даже правильнее https://t.me/angular_ru/502582

Marisha- Автор вопроса
Eric Cartmenez
как вариант в пайпе можно ‘field: any’ заменить на...

В таком случае ошибка в app.component.html в строке " *ngFor="let post of posts | filter: search:searchField"" Текст ошибки: Argument of type 'string' is not assignable to parameter of type 'keyof Post' Конкретно подчеркивает searchField

Marisha- Автор вопроса
Sergei Sergeevich
а что если типизировать field в аргументах пайпа: ...

В таком случае ошибка в app.component.html в строке " *ngFor="let post of posts | filter: search:searchField"" Текст ошибки: Argument of type 'string' is not assignable to parameter of type '"title" | "text" | undefined' Конкретно подчеркивает searchField

Marisha- Автор вопроса
Eric Cartmenez
в апп компоненте searchField: keyof Post

Ошибка: Expected 1-3 arguments, but got 4 *ngFor="let post of posts | filter: search:searchField:keyof Post

Marisha
Ошибка: Expected 1-3 arguments, but got 4 *ngFor="...

не в темплейте) в app.component.ts

Marisha- Автор вопроса
Eric Cartmenez
не в темплейте) в app.component.ts

Спасибо, работает ) Надо запомнить данный вариант

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта