首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多类型角模板参考对象

多类型角模板参考对象
EN

Stack Overflow用户
提问于 2021-08-27 09:00:05
回答 3查看 463关注 0票数 0

我有一个对象绑定到模板。该对象有两种类型。

代码语言:javascript
复制
const config: IDialogConfig | IDialogConfig[];

我的模板看起来像这样。

代码语言:javascript
复制
<ng-container *ngIf="isArray(config); else singleMessage">
    <ng-container *ngFor="let message of config">
        <p [fieldId]="message.fieldKey" class="display-4 confirm-msg"></p>
    </ng-container>
</ng-container>
<ng-template #singleMessage>
    <p [fieldKey]="config.fieldKey" class="display-4 confirm-msg"></p>
</ng-template>

现在,通过这种设置,我在#singleMessage模板中得到了一个错误

属性'fieldID‘在'IDialogMessage[]’类型上不存在

不管怎样,我可以让这个装置正常工作吗?我不想使用any类型。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-27 09:10:19

您可以保持配置类型不变,但在模板中,可以使用$any()方法来处理此错误:

代码语言:javascript
复制
<ng-container *ngIf="isArray(config); else singleMessage">
    <ng-container *ngFor="let message of config">
        <p [fieldId]="message.fieldKey" class="display-4 confirm-msg"></p>
    </ng-container>
</ng-container>
<ng-template #singleMessage>
    <p [fieldKey]="$any(config).fieldKey" class="display-4 confirm-msg"></p>
</ng-template>
票数 2
EN

Stack Overflow用户

发布于 2021-08-27 09:32:48

由于我们不能在模板中使用运算符,所以很难在模板中转换类型,我可以想到的一种方法是:

在组件中包含以下代码:

代码语言:javascript
复制
  asDailogConfig(value) : IDialogConfig { return value; }

然后在模板中:

代码语言:javascript
复制
<p [fieldKey]="(asDailogConfig(config)).fieldKey" class="display-4 confirm-msg"></p>
票数 1
EN

Stack Overflow用户

发布于 2021-08-31 01:50:15

我会创建一个吸气剂,例如IDialogConfig[]类型的configArr

代码语言:javascript
复制
const config: IDialogConfig | IDialogConfig[]

get configArr(): IDialogConfig[] {
  return [this.config ?? []].flat()
}

然后在我们看来:

代码语言:javascript
复制
<ng-container *ngFor="let message of configArr">
  <p [fieldId]="message.fieldKey" class="display-4 confirm-msg"></p>
</ng-container>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68950713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档