有没有办法说出像这样的角度:
<th ng-repeat=" o in Odds" >{{o.Name || "-"}}</th>
所以如果o.Name中没有数据显示“ - ”?
答案 0 :(得分:8)
您的示例应该可以使用,但如果您在o.Name中有空格或函数,它将无法解析为falsey,您将在HTML中获得一个不可见的空格而不是所需的短划线。
可以使用通用过滤器将空值替换为破折号,并首先对输入应用各种标准化:
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>
然后,对于其他行/列以及您想要应用相同规则的任何其他地方,这是完全可重用的。
答案 1 :(得分:2)
对于这种情况,你可以使用这样的ngIf:
<th ng-repeat=" o in Odds" >
<span ng-if="o.Name">{{o.Name}}</span>
<span ng-if="!o.Name"> - </span>
</th>
答案 2 :(得分:1)
如果这不起作用,您可以使用ngIf。
<th ng-repeat="o in Odds">
<span ng-if="o.Name">{{o.Name}}</span>
<span ng-if="!o.Name">-</span>
</th>
答案 3 :(得分:1)
创建notapplicable.pipe.ts
@Pipe({name: 'NA'})
export class Notapplicable implements PipeTransform {
transform(value: string): string {
let newStr: string = "";
if(value=='')
{
newStr="NA";
}
else{
newStr=value;
}
return newStr;
}
}
将此包含在应用模块中
import { Notapplicable } from './notapplicable.pipe.ts';
declarations: [
AppComponent,
Notapplicable
],....
并在HTML文件中以这种方式使用
<tr *ngFor="let article of articledata">
<td>{{article.a | NA}}</td>
<td>{{article.b | NA}}</td>
<td>{{article.c | NA}}</td>
<td>{{article.d | NA}}</td>
</tr>
这样,如果字符串为空,则可以显示NA
答案 4 :(得分:0)
如果在Aungular 5中,您可以在ng for内部使用其他类似的东西。
这样做的好处是,如果您有多个记录想要显示: 如果有记录,则显示您所拥有的内容;如果不显示,则显示“-”。那么您只需要编写一个ng-template。
<td ng-if="o.Name; else showNA">{{ o.Name }}</td>
<td ng-if="o.Address; else showNA">{{ o.Address }}</td>
<td ng-if="o.Phone; else showNA">{{ o.Phone }}</td>
<ng-template #showNA>
<td>-</td>
</ng-template>