首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NgForOf<string = string[],NgIterable<string = string[]>>

NgForOf<string = string[],NgIterable<string = string[]>>
EN

Stack Overflow用户
提问于 2022-05-23 12:40:55
回答 1查看 76关注 0票数 1

我有一个数据类型:

代码语言:javascript
复制
export interface TYPE_A {
  valueType: TYPE_A_VALUE_TYPES;
  value: string | string[];
}

export enum TYPE_A_VALUE_TYPES {
  singleValue = "singleValue",
  multiValue = "multiValue",
}

而且,我在@Input组件中使用了@Input

代码语言:javascript
复制
@Input() datas: TYPE_A[] = [];

这是我的HTML代码:

代码语言:javascript
复制
<div class="feildContainer" *ngFor="let data of datas">
    <div class="singleFeild" *ngIf="data.valueType == 'singleValue'">
         ...
    </div>
    <div class="multiFeild" *ngIf="data.valueType == 'multiValue'">
        <other-component *ngFor="let dataValue of data.value"></other-component>
    <div>
</div>

我在vscode中得到了这个错误

代码语言:javascript
复制
NgForOf<string | string[], NgIterable<string | string[]>>.ngForOf: NgIterable<string | string[]> | null | undefined

我理解这个错误的逻辑,但我正在寻找这个问题的最佳解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-23 12:49:03

将受歧视的工会用作您的类型:

代码语言:javascript
复制
export interface TYPE_A_SINGLEVALUE {
  valueType: TYPE_A_VALUE_TYPES.singleValue;
  value: string;
}
export interface TYPE_A_MULTIVALUE {
  valueType: TYPE_A_VALUE_TYPES.multiValue;
  value: string[];
}

export enum TYPE_A_VALUE_TYPES {
  singleValue = "singleValue",
  multiValue = "multiValue",
}

然后,当您想要使用value项时,首先根据两个可能的值之一检查valueType,编译器将知道您希望引用单个或多值项并相应地假设。在if of valueType之后,value不会是string | string[],而是stringstring[]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72348678

复制
相关文章

相似问题

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