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

时间:2016-09-20 18:53:49

标签: angular

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

{{stat |号: '2.1-2'}}

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

2 个答案:

答案 0 :(得分:1)

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

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

<script type="text/javascript">
$(window).load(function (e) {
    var $input = $('#refresh');

    $input.val() == 'yes' ? location.reload(true) : $input.val('yes');
});
</script>

或创建自己的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 {} ..

答案 1 :(得分:-1)

仅使用三元运算符即可解决类似情况:

{{stat ? stat : 0}} 

请注意,我收到的是 undefined ,不是字符串。 希望这对某人有帮助。