angular.module('App.filters', []).filter('placeholder', [function () {
return function (text, placeholder) {
// If we're dealing with a function, get the value
if (angular.isFunction(text)) text = text();
// Trim any whitespace and show placeholder if no content
return text.trim() || placeholder;
};
}]);
然后,您可以按如下方式使用它:
<th ng-repeat=" o in Odds" >{{o.Name | placeholder:'-'}}</th>
6条答案
按热度按时间myzjeezk1#
您的示例应该可以工作,但如果您在o.name中有空格或函数,则它不会解析为falsey,并且您将在HTML中获得不可见的空格,而不是所需的破折号。
可以使用通用过滤器来替换破折号的空值,并首先对输入应用各种归一化:
然后,您可以按如下方式使用它:
然后,对于其他行/列以及您想要应用相同规则的任何其他地方,这是完全可重用的。
示例:http://jsfiddle.net/kfknbsp7/4/
wvyml7n52#
在这种情况下,你可以像这样使用ngIf:
cs7cruho3#
如果这不起作用,您可以使用ngIf
vd2z7a6w4#
创建不适用的.pipe.ts
将此包含在应用程序模块中
并在HTML文件中以这种方式使用它
这样,如果字符串为空,就可以显示NA
snvhrwxg5#
也可以使用三元运算符
{{o.Name??o.Name:“-"}}
js5cn81o6#
如果在Aungular 5中,你可以在ng中使用if else。
这样做的好处是,如果您有多个记录想要显示:if has records show what you have if not show '-'. then you only need to write one ng-template.