angular - 管道 'NaN' 的无效参数 'DecimalPipe'

标签 angular

在 AJAX 请求的某些实例中,我得到一个字符串作为响应而不是一个数字。这会导致我的 Angular2 管道破裂。

{{统计 |编号:'2.1-2'}}

如果存在字符串,有没有办法禁用或更改管道?

最佳答案

我认为你需要一个额外的功能。

请参阅此 plunker 以获取演示:https://plnkr.co/edit/7eVp2Z99Z47PBWp3eNW4?p=preview

import {Component, NgModule, Pipe, PipeTransform } from '@angular/core'
import {DecimalPipe} from '@angular/common';
import {BrowserModule} from '@angular/platform-browser'

@Pipe({ name: 'myNumber' })
export class MyNumberPipe implements PipeTransform {

  transform (value: any, args: string) {
    let pipe = new DecimalPipe();
    value = isNaN(value) ? 0 : +value;
    return pipe.transform(value, args);
  }

}

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      {{getNumber('3') | number:'2.1-2'}}
      <br />
      {{getNumber(12) | number:'2.1-2'}}
      <br />
      {{getNumber('NaN') | number:'2.1-2'}}
      <br />
      <br />

      {{'3' | myNumber:'2.1-2'}}
      <br />
      {{12 | myNumber:'2.1-2'}}
      <br />
      {{'NaN' | myNumber:'2.1-2'}}
      <br />
    </div>
  `,
})
export class App {
  constructor() {
    this.name = 'Angular2'
  }

  getNumber(val: any) {
    if (isNaN(val)) return 0;
    return +val;
  }
}

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App, MyNumberPipe ],
  bootstrap: [ App ]
})
export class AppModule {}

或创建您自己的 Pipe ..

关于angular - 管道 'NaN' 的无效参数 'DecimalPipe',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601748/

相关文章:

angular - 知道父组件中是否绑定(bind)了 @output 事件

angular - typescript 类继承

node.js - Node/Express 与 Angular 2

javascript - 不完全由 Angular 表达式组成的正则表达式匹配字符串

node.js - MEAN 在源文件更改时自动编译

angular - 如何手动延迟加载模块?

angular - 如何将可观察值传递给 Angular Bootstrap 组件?

javascript - Angular 4 node_modules 的文件夹很重

angular - nginx.conf 中的 try_files 不工作

javascript - 如何将垫对话框注入(inject)服务?