Как я могу использовать трубу в этом случае

#angular #pipe

Вопрос:

у меня есть этот номер, полученный из моего api

"vlr": 1749109.14

и я должен сформировать, чтобы показать

174.910.914

Я попытался использовать pipe, но не смог получить желаемое форматирование.

есть ли способ получить это форматирование, или было бы лучше изменить значение, поступающее из api?

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

1. Вы уверены, что всегда будете получать XXX.XXX.XXX ? Может у вас есть, например, XX.XXX.XXX ?

Ответ №1:

По моему мнению, у вас есть 2 решения :

    1. Создайте функцию в службе, в которую вы получаете эти данные, и отформатируйте ее непосредственно в службе.
    1. Создайте канал и рассчитайте значение.
  1. (название услуги)
 getData(): Observable<any> {
  return this.http.get<any>(...).pipe(
    map(res => this.formatValue(res.vlr))
  );
}

private formatValue(value: number): string {
  let temp = value.toString().replace('.', '');
  return temp.match(/.{1,3}/g).join(".");
}
 

(компонент)

 
vlr: string;

constructor(service: ServiceName) {
  this.service.getData().subscribe(res => {
    console.log(res);
    this.vlr = res.vlr;
  });
}
 

  1. тс
 vlr = 1749109.14;
 

HTML

 <span>{{ vlr | formatVlr }}</span>
 

(труба)

 transform(value: number): string {
  let temp = value.toString().replace('.', '');
  return temp.match(/.{1,3}/g).join(".");
}