作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Angular 组件中,我有一个 Input
将提供 2 种类型中的 1 种。
@Input() profile: UserProfileDetails | BusinessProfileDetails;
配置文件模板很简单,我只想使用单个模板,所以我不重复代码。但是由于类型的属性不同,我收到了一个模板错误。
export interface UserProfileDetails {
createdOn: Date;
id: string;
name: string;
}
export interface BusinessProfileDetails {
businessId: string;
businessLocation: string;
createdOn: Date;
id: string;
name: string;
}
以及我模板中的代码:
<div>
<h1>{{profile.name}}</h1>
<div>{{profile.createdOn}}</div>
<div>{{profile.id}}</div>
<div *ngIf="profile?.businessId">{{profile.businessId}}</div>
<div *ngIf="profile?.businessLocation">{{profile.businessLocation}}</div>
</div>
我相信我明白我收到错误的原因,但我不确定如何在仍然使用
or
时解决问题条件
@Input() profile: UserProfileDetails | BusinessProfileDetails;
最佳答案
您可以使用检查 profile
上的属性的函数来设置解决方法。使用 in
运算符(operator)。不是最好的解决方案,但您可以根据需要保持接口(interface)联合:
组件
getValue(
attribut: string,
obj: UserProfileDetails | BusinessProfileDetails
): any {
if (attribut in obj) {
return obj[attribut];
}
}
模板
<div>
<h1>{{ profile.name }}</h1>
<div>{{ profile.createdOn }}</div>
<div>{{ profile.id }}</div>
<div>{{ getValue('businessId', profile) }}</div> <!-- can be improved using a check method combined with ngIf -->
<div>{{ getValue('businessLocation', profile) }}</div>
</div>
关于javascript - 将 Or 用于多种类型时,类型上不存在属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71343696/
我是一名优秀的程序员,十分优秀!