2016-12-12 9 views
0

angular number filterを装飾して、数値でない場合は入力を修正しないで戻すことはできますか?angle: 'maybe' number formatter

<my-tag input-value="{{foo() | number: 2}}"></my-tag> 

foo()は1.2345を返すと、その値は1.23を示すべきであるが、それは「ABCD」を返すとき、それはちょうどそれを返します:「ABCD」を。

+0

一見、私はあなたが正しいと思いました。これは私の現在の問題を解決するだろう。しかし、私は同じデコレーションコードのN個のインスタンスを持たずに 'date'フィルタ、' currency'フィルタなどを再利用できるようにしたいと思います。 – xtofl

+0

私は 'ng-if'に基づいてフィドルを行いましたが、私の答えを投稿する前にあなたの質問がロックされています... [こちらをチェックしてください](https://jsfiddle.net/Mistalis/Lwhg1fuv/)。 – Mistalis

答えて

0

あなたは@Ankhリンク、すなわちによって示唆されているようにあなたはデコレータを構築することができnumberフィルターを買いだめしたい場合:

app.config(['$provide', function($provide) { 
    $provide.decorator('numberFilter', ['$delegate', function($delegate) { 
    var srcFilter = $delegate; 

    var extendsFilter = function() { 
     // Put the logic you want here: 
     let val = arguments[0]; 
     if (angular.isNumber(val)) { 
     return srcFilter.apply(this, arguments); 
     } 
     else if (angular.isString(val)) { 
     return val; 
     } 
     else { 
     // Or throw an error 
     return JSON.stringify(val); 
     } 
    } 

    return extendsFilter; 
    }]) 
}]); 

このplunkerを参照してください。

関連する問題