Очистка строки в *ngFor удаляет элементы, которые не соответствуют

#javascript #angular #string #replace

Вопрос:

У меня есть простой цикл *ngFor, который отображает список заголовков.

 fetchData = [{"title":"woman .gif"},{"title":"aman",},{"title":"jessica",},{"title":"rosh"}];

<div *ngFor = "let title of fetchData">
  {{sanitiseIconString(title.title)}}
</div>
 

Я запускаю его с помощью своего метода очистки , чтобы удалить все ссылки и все, что угодно, включая .extension , например .gif , .jpg , .png

 sanitiseIconString(str: string): string {
  return str amp;amp; str.substring(0, str.lastIndexOf(".")).replace(/ /g, " ");
}
 

Мой цикл возвращает только woman то, что было правильно очищено, но почему остальные не отображаются?

https://stackblitz.com/edit/ngfor-example-2atjev?file=app/app.component.ts

Комментарии:

1. Я понимаю это потому, что в других названиях нет «.»

Ответ №1:

Обновите строку очистки в файле app.compoent.ts

это потому, что у вашего другого названия нет . и 20%, поэтому условие всегда ложно и не возвращается

 sanitiseIconString(str: string): string {
    return str.substring(0, str.lastIndexOf(".")).replace(/ /g, " ")? str.substring(0, str.lastIndexOf(".")).replace(/ /g, " "):str;
    }
 

Ответ №2:

Если вы хотите удалить использование string.replace() , это будет проще и проще

  <div *ngFor="let title of fetchData">
      {{title.title.replace(' ','')}}
      <!-- {{sanitiseIconString(title.title)}} -->
    </div>