Можно ли применить условную трубу, которая сама содержит условие?

У меня есть раскрывающийся список (ввод + автозаполнение), где я могу ввести строку или выбрать объект из раскрывающегося списка. Я хочу использовать канал только тогда, когда значение на входе имеет строковый тип. Если пользователь выбирает значение из раскрывающегося списка, мне нужно удалить настраиваемый канал.

Я хочу применить настраиваемый канал с параметром typeof.name String. и удалить его, если тип - Object.

Пробовал ссылку, но тщетно Angular 2 Pipe при условии

Актуальный код:

<mat-option *ngFor="let option of sortedOptions"
       [innerHTML]="option?.name | highlight : userControl.value" >

Я не могу понять, как здесь проверить тип String:

{{ typeof(option.name) ? (option?.name | highlight : userControl.value)  : option.name }}

person Miss Komal    schedule 13.06.2019    source источник


Ответы (1)


Вы можете создать вспомогательный метод для своего компонента следующим образом:

isString(val) { return typeof val === 'string'; }

Теперь вы можете проверить свое состояние так:

{{ isString(option.name) ? (option?.name | highlight : userControl.value)  : option.name }}

Вот рабочая демонстрация. для тебя

person asimhashmi    schedule 13.06.2019
comment
Спасибо, что указали путь. но он не выделяется, когда тип String. - person Miss Komal; 13.06.2019
comment
@MissKomal Я обновил свой ответ и добавил демонстрацию stackblitz, посмотрите здесь в действии - person asimhashmi; 13.06.2019