Как удалить определенный текст из строки после определенного символа в angular 8 с помощью *ngFor?

#angular #typescript

Вопрос:

Я новичок в angular, мне нужна помощь.

В моем приложении я получил некоторые данные, используя ответ API. его массив формата объекта. поэтому я использовал *NG для итерации данных. все работает нормально. В данных у меня есть значение под названием электронная почта. поэтому в электронном письме (например. mine@gmail.com), мне нужно показать только имя без «@gmail.com или @yahoo.com» вот так. Я имею в виду, что должен отображаться только на»@». Я попробовал метод разделения, но здесь, в *ngFor, я не знаю, как это использовать.

кто-нибудь, пожалуйста, помогите мне это исправить?

Это мой HTML-код:

 <div *ngFor="let content of listContent.content">
  <p>{{content.email}}</p>
  <p>{{content.name}}</p>
</div>
 

Это мой код ts:

 fetchContents() {
  this.MessagesService.findAll(id).subscribe(data => {
    this.listContent = data;
  });
}
 

перед рендерингом в HTML мне нужно удалить текст, а затем показать его здесь.

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

1. Вы можете использовать канал, поэтому вы будете использовать его внутри цикла ngFor

2. Осакр, Спасибо за ваш ответ, не могли бы вы дать еще какое-нибудь представление об этом? я не знаю, как это сделать.

3. @GaurangDhorda в интерфейсе я привел только строку. Мне просто нужно показывать HTML только так.

Ответ №1:

В основном вам нужно использовать трубы.

Сначала мы создадим наш пользовательский канал, который будет заряжен удалением доменной части электронной почты.

 import { Pipe, PipeTransform } from '@angular/core';

@Pipe({ name: 'removeDomainFromEmail' })
export class RemoveDomainFromEmailPipe implements PipeTransform {
  transform(value: string): string {
     // Do the stuff to remove the domain name in the value
     return value;
  }
}

 

Теперь, когда у вас есть свой собственный канал, вы можете использовать его в остальной части вашего приложения, поэтому, если вы правильно импортируете его в свой компонент, вы сможете использовать его в HTML, как это:

 <div *ngFor="let content of listContent.content">
  <p>{{content.email | removeDomainFromEmail }}</p>
  <p>{{content.name}}</p>
</div>
 

Используя каналы, ваш код будет более масштабируемым и более читаемым.

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

1. спасибо вам за ваше решение и краткое объяснение, это действительно полезно.

Ответ №2:

Ты пробовал это сделать?

 {{content.email.split('@')[0]}}
 

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

1. это то, чего я ожидал. на самом деле, я использовал это непосредственно в данных ответа, используя тип метода foreach. Я не пробовал этот способ. большое вам спасибо!

2. Будьте осторожны, вызывая методы/функции в шаблоне. Они вызываются каждый цикл обнаружения изменений, даже если значение не меняется. Вот почему мы используем трубы.

3. Вот почему мое решение намного лучше, чем этот «обходной путь».