类型 'undefined' 不能分配给类型 'ApexAxisChartSeries | ApexNonAxisChartSeries'

如何解决类型 'undefined' 不能分配给类型 'ApexAxisChartSeries | ApexNonAxisChartSeries'

我在 ts 中使用过这段代码

export type pieChartOptionss = {
  series?: ApexNonAxisChartSeries | '';
  chart?: ApexChart | '';
  legend?: ApexLegend | '';
  dataLabels?: ApexDataLabels | '';
  responsive?: ApexResponsive[] | '';
  labels?: any | '';
};
export class DashboardComponent implements OnInit {
 public pieChartOptionss!: Partial<pieChartOptionss>;
}
     (response: any) => {
          this.user_data = response.results;
          console.log('user_data',this.user_data)
          this.user_data_true = this.user_data.filter(x => x.is_active === true)
          this.user_data_false = this.user_data.filter(x => x.is_active === false)
          this.pieChartData = [this.user_data_true.length,this.user_data_false.length];
          this.pieChartOptionss = {
            series: [this.user_data_true.length,this.user_data_false.length],chart: {
              type: 'donut',width: 270,},legend: {
              show: false,dataLabels: {
              enabled: true,labels: ['Active','Inactive'],responsive: [
              {
                breakpoint: 480,options: {},],};
        }

在 html 中我使用了这个代码

    <div class="body" *ngIf="pieChartOptionss">
          <apx-chart [series]="pieChartOptionss?.series" [chart]="pieChartOptionss?.chart"
            [labels]="pieChartOptionss?.labels" [responsive]="pieChartOptionss?.responsive"
            [dataLabels]="pieChartOptionss?.dataLabels" [legend]="pieChartOptionss?.legend" class="apex-pie-center">
          </apx-chart>
          <div class="table-responsive m-t-15">
            <table class="table align-items-center">
              <tbody>
                <tr>
                  <td><i class="fa fa-circle col-cyan mr-2"></i> {{ "active" | translate }}</td>
                  <td class="col-blue">{{pieChartOptionss?.series[0]}}</td>
                </tr>
                <tr>
                  <td><i class="fa fa-circle col-green mr-2"></i>{{ "inactive" | translate }}</td>
                  <td class="col-green">{{pieChartOptionss?.series[1]}}</td>
                </tr>
              </tbody>
            </table>
          </div>
        </div>

问题是,当我为项目提供服务时显示错误

src/app/panel/dashboard/dashboard.component.html 中的错误:97:26 - 错误 TS2322:键入 '"" | ApexNonAxisChartSeries |未定义'不是 可分配到类型 'ApexAxisChartSeries | ApexNonAxisChartSeries'.
类型 'undefined' 不能分配给类型 'ApexAxisChartSeries | ApexNonAxisChartSeries'。

97

src/app/panel/dashboard/dashboard.component.ts:93:16 93 templateUrl: './dashboard.component.html',~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 组件 DashboardComponent 的模板中发生错误。 src/app/panel/dashboard/dashboard.component.html:97:62 - 错误 TS2322: 输入 '"" |顶点图表 | undefined' 不可分配给类型 '顶点图表'。类型“未定义”不能分配给类型“ApexChart”。

97

src/app/panel/dashboard/dashboard.component.ts:93:16 93 templateUrl: './dashboard.component.html',~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 组件 DashboardComponent 的模板中发生错误。 src/app/panel/dashboard/dashboard.component.html:98:53 - 错误 TS2322: 输入 '"" | Apex响应[] | undefined' 不可分配给类型 'Apex响应[]'。类型“未定义”不可分配给类型 'ApexResponsive[]'。

98 [labels]="pieChartOptionss?.labels" [响应]="pieChartOptionss?.responsive" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/app/panel/dashboard/dashboard.component.ts:93:16 93 templateUrl: './dashboard.component.html',~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 组件 DashboardComponent 的模板中发生错误。 src/app/panel/dashboard/dashboard.component.html:99:17 - 错误 TS2322: 输入 '"" |顶点数据标签 | undefined' 不可分配给类型 'ApexDataLabels'。类型“未定义”不可分配给类型 'ApexDataLabels'。

99 [dataLabels]="pieChartOptionss?.dataLabels" [legend]="pieChartOptionss?.legend" class="apex-pie-center"> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/app/panel/dashboard/dashboard.component.ts:93:16 93 templateUrl: './dashboard.component.html',~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 组件 DashboardComponent 的模板中发生错误。 src/app/panel/dashboard/dashboard.component.html:99:61 - 错误 TS2322: 输入 '"" | Apex传奇| undefined' 不可分配给类型 'ApexLegend'。类型“未定义”不可分配给类型 'ApexLegend'。

99 [dataLabels]="pieChartOptionss?.dataLabels" [legend]="pieChartOptionss?.legend" class="apex-pie-center"> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/app/panel/dashboard/dashboard.component.ts:93:16 93 templateUrl: './dashboard.component.html',~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 组件 DashboardComponent 的模板中发生错误。 src/app/panel/dashboard/dashboard.component.html:106:46 - 错误 TS2532:对象可能是“未定义”。

106 {{pieChartOptionss?.series[0]}} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

src/app/panel/dashboard/dashboard.component.ts:93:16 93 templateUrl: './dashboard.component.html',~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 组件 DashboardComponent 的模板中发生错误。 src/app/panel/dashboard/dashboard.component.html:110:47 - 错误 TS2532:对象可能是“未定义”。

110 {{pieChartOptionss?.series[1]}}

解决方法

唯一对我有用的解决方案是添加单词“any”,如下面的代码所示:

public pieChartOptionss!: Partial<pieChartOptionss> | any;
,

根据错误,我假设 pieChartOptionss?.series、pieChartOptionss?.chart、pieChartOptionss?.labels 等的值在初始渲染中为空。

在 *ngIf 中添加这些检查应该可以避免这些错误

<div class="body" *ngIf="pieChartOptionss?.series && pieChartOptionss?.chart && ... ">
</div>

或者,您有一个函数可以在 component.ts 文件中为您执行此检查,而不是在 component.html 中进行此检查

在 component.ts 中

public validateOptions(options: pieChartOptionss): bool {
   return options?.series && options?.chart && ...
}

在 component.html

<div class="body" *ngIf="validateOptions(pieChartOptionss)">
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?