当前位置: 首页 > 知识库问答 >
问题:

无法读取未定义得属性“map”.Angular-ChartJs

廖华翰
2023-03-14

这是app.component.ts

import { Component } from '@angular/core';
import { GraficaService } from './services/grafica.service'
import { Chart } from 'chart.js';




@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'yoga';
  chart = [];

  constructor( private _grafica: GraficaService){}

  ngOnInit(){
    this._grafica.graficoEstadistico()
     .subscribe(res => {

        let temp_max = res['list'].map(res => res.main.temp_max)
        let temp_min = res['list'].map(res => res.main.temp_min)
        let alldates = res['list'].map(res => res.dt)

        let weatherDates = []

        alldates.forEach((res) => {
          let jsdate = new Date(res * 1000)
          weatherDates.push(jsdate.toLocaleTimeString('en'), {year: 'numeric', month:'short',day:'numeric'})         
        });

        console.log(weatherDates);

        this.chart = new Chart('canvas',{
          type: 'line',
          data: {
            labels: weatherDates,
            datasets: [
              {
                data: temp_max,
                borderColor: '#3cba9f',
                fill:false

              },
              {
                data: temp_min,
                borderColor: '#ffcc00',
                fill:false

              },
            ]
          },

          options: {
            legend:{
              display:false
            },
            scales:{
              xAxes:[{
                display: true
              }],
              yAxes:[{
                display: true
              }]
            }
          }
        })


     })


    // Yo puedo presentar mi json por consola ,asi . De manera continuada al this
    //.subscribe(res => console.log(res))

  }
}

我目前正在一个ANGULAR项目中使用“ChartJs”库来生成统计图,但当在控制台中运行该项目时,我得到以下错误:错误类型错误:无法读取未定义的属性“map”,有什么解决方案?

core.js:15714错误类型错误:无法读取SafeSubscriber._next(app.component.ts:22)在SafeSubscriber.push../Node_modules/RXJS/_ESM5/Internal/Subscriber.js.SafeSubscriber.__tryorunsub(subscriber.js:196)在SafeSubscriber.push../Node_modules/RXJS/_ESM5/Internal/Subscriber.js.safeSubscriber.next(subscriber.js:134)在Subscriber.push./Node_modules/RXJS/_ESM5/Internal/Subscriber.js.subscriber.next(subscriber.js:134)未定义的属性“map js:77)在subscriber.push../node_modules/rxjs/_esm5/internal/subscriber.js.next(subscriber.js:54)在mapsubscriber.push./node_modules/rxjs/_esm5/internal/operators/map.js.mapsubscriber._next(map.js:41)在mapsubscriber.push./node_modules/rxjs/_esm5/internal/subscriber.js.next(subscriber.js:54)在filterSubscriber上的ber.push../node_modules/rxjs/_esm5/internal/subscriber.js.subscriber.next(subscriber.js:54)。push../node_modules/rxjs/_esm5/internal/operators/filter.js.filtersubscriber._next(filter.js:38)

共有1个答案

唐沈义
2023-03-14

您使用map函数的唯一地方是在res['list']表示,当您获得res时,它上没有list属性。

要进行调查,请在subscribe的开头执行console.log(res)并观察其中的内容。

同样,作为注释,防止使用shadowed变量(res在map和函数中),这样您就可以将其更改为

在>res['list'].map(r=>r.main.temp_max)之后

和另一个改进>res.list.map(r=>r.main.temp_max)

 类似资料:
  • 由于某些原因,JSON的响应映射不正确,这里是我的HTML。配置文件-search.component.html 下面是html从中提取的组件。配置文件-search.component.ts http-error-handler.service.ts:33类型错误:无法读取MapSubscriber.Project(profile-search.service.ts:49)在MapSubscri

  • 问题内容: 我有以下从容器组件中调用的组件。容器组件通过交易道具。 我知道prop中的data属性可以很好地传递并且具有数据,可以从console.log调用中进行访问。但是,当我尝试映射数据并创建列表时,出现错误: 数据如下所示: 我究竟做错了什么? 问题答案: 提供对未定义的检查,然后渲染该组件,因为道具最初可能不提供数据,但在第二个渲染中可用。那应该解决你的问题

  • 我目前使用两个组件,并在这两个组件上实现了react Route。但是当我单击父组件viewall.js时,我无法从我的模拟json服务器api中获取值,这个错误显示: viewall.js

  • 为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用

  • 问题内容: 我正在制作非常简单的react应用。但是,当我尝试通过onChange事件调用父(实际上是祖父母)组件的方法时,我一直在获取。 这是触发事件的组件/表单(因此,在绑定的父组件上调用方法…是的,因为我通过道具将其从父组件传递下来,所以在方法上使用了.bound(this)。) 这是我如何通过大多数父(祖父母)组件中的props传递该方法的方法。 这是我作为父项(方法所有者和方法调用程序之