如果值为空,则显示“ - ”?

时间:2015-05-22 14:07:55

标签: angularjs

有没有办法说出像这样的角度:

<th ng-repeat=" o in Odds" >{{o.Name || "-"}}</th>

所以如果o.Name中没有数据显示“ - ”?

5 个答案:

答案 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>

然后,对于其他行/列以及您想要应用相同规则的任何其他地方,这是完全可重用的。

示例:http://jsfiddle.net/kfknbsp7/4/

答案 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>