Angular2 检查对象是否在 *ngIf 中有 peoperty
Angular2 check if object has peoperty inside *ngIf
export interface Element {
name: string;
}
export class Room implements Element {
name: string;
type:string
}
export class Hall implements Element {
name: string;
}
我的变量类型如下
selectedElement: Element;
现在 html 我如何检查对象是否有 属性 'type'?
<div *ngIf="selectedElement?.type">
my div
</div>
我想这应该可以满足您的要求:
*ngIf="hasProp(selectedElement, 'type')"
hasProp(o, name) {
return o.hasOwnProperty(name);
}
除了 Günter Zöchbauer 所说的:
*ngIf="selectedElement && selectedElement['type']"
您可以在 html:
中轻松完成
<div *ngIf="selectedElement.hasOwnProperty('type')">
my div
</div>
或
<div *ngIf="selectedElement.hasOwnProperty('type');then
showMyDiv">...</div>
<ng-template #showMyDiv>
my div
</ng-template>
在这种情况下,管道将是性能最高的选择。
TS:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'hasProp',
})
export class HasPropPipe implements PipeTransform {
transform(object: object, prop: string): boolean {
return object.hasOwnProperty(prop);
}
}
模板:
<button *ngIf="option | hasProp: 'value'">Yay!</button>
export interface Element {
name: string;
}
export class Room implements Element {
name: string;
type:string
}
export class Hall implements Element {
name: string;
}
我的变量类型如下
selectedElement: Element;
现在 html 我如何检查对象是否有 属性 'type'?
<div *ngIf="selectedElement?.type">
my div
</div>
我想这应该可以满足您的要求:
*ngIf="hasProp(selectedElement, 'type')"
hasProp(o, name) {
return o.hasOwnProperty(name);
}
除了 Günter Zöchbauer 所说的:
*ngIf="selectedElement && selectedElement['type']"
您可以在 html:
中轻松完成<div *ngIf="selectedElement.hasOwnProperty('type')">
my div
</div>
或
<div *ngIf="selectedElement.hasOwnProperty('type');then
showMyDiv">...</div>
<ng-template #showMyDiv>
my div
</ng-template>
在这种情况下,管道将是性能最高的选择。
TS:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'hasProp',
})
export class HasPropPipe implements PipeTransform {
transform(object: object, prop: string): boolean {
return object.hasOwnProperty(prop);
}
}
模板:
<button *ngIf="option | hasProp: 'value'">Yay!</button>