Округление блока с использованием десятичной черты в angular 4

Используя угловой 4,

{{31.94 | number:'1.0-0'}} 

Выход: 32

Любая идея, как заблокировать раунд. Ожидаемый результат 31


person Sudip Pal    schedule 21.11.2017    source источник


Ответы (3)


Вам нужно создать свою пользовательскую трубу, поскольку DecimalPipe не предоставляет никакой функции пола. Кроме того, вы можете добавить в него свою десятичную черту. Ваша пользовательская трубка:

@Pipe({name: 'floor'})
export class FloorPipe implements PipeTransform {
    /**
     *
     * @param value
     * @returns {number}
     */
    transform(value: number): number {
        return Math.floor(value);
    }
}

Использовать в шаблоне как:

  <span>{{ yournumber | floor | your_decimal_pipe }}</span>
person Ankit Kapoor    schedule 21.11.2017
comment
Это просто уменьшит значение, но мне будет не хватать запятой (что бы ни делал десятичный знак) в случае использования 1999,99, это не даст нам 1999 - person Sudip Pal; 21.11.2017
comment
Вы можете использовать несколько каналов, а затем {{ yournumber | этаж | ваша_десятичная_труба }} - person Ankit Kapoor; 21.11.2017
comment
Да, я могу написать собственный канал для выполнения этой работы (полное значение, форматирование запятой и т. д.), но просто хотел подтвердить, есть ли у углового десятичного канала уже конфигурация или нет. - person Sudip Pal; 21.11.2017
comment
Нет, не знают. - person Ankit Kapoor; 21.11.2017
comment
Если вы найдете свое решение из этого, вы можете отметить его правильно :) - person Ankit Kapoor; 21.11.2017
comment
Я также предлагаю использовать эту библиотеку github.com/MikeMcl/decimal.js. Вы используете его в своем пользовательском канале, чтобы получить желаемое округление. - person pxr_64; 12.08.2019

ваш.component.ts

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


@Pipe({name: 'DecimalPipe'})
export class NumNotRoundPipe implements PipeTransform {
  transform(value: number): number {
    var num1 = Math.floor(value * 100) / 100;
    return num1;
  }
}

ваш.модуль.тс

import {NumNotRoundPipe} from './your.component'

@NgModule({
    imports: [
    ],
    declarations: [
        NumNotRoundPipe
    ],
    entryComponents: [

    ],
    providers: [

    ],
    schemas: [CUSTOM_ELEMENTS_SCHEMA]
})

ваш.component.html

<span>{{yourNumber | DecimalPipe:'1.2-2'}}</span>
person Amanur Rahman    schedule 06.08.2018

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

{{31.94 | slice:0:2}}
//Output : 31

Достиг бы желаемого результата в этом конкретном случае.

{{1.94 | number:'2.2-2' | slice:0:2}}
//Output : 01

Вы все равно захотите использовать пользовательский канал, если не хотите заполнять 0.

person Ado Ren    schedule 18.11.2018
comment
А 0,5? - person N.K; 26.11.2020