Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误类型错误:data.slice不是函数_Javascript_Angular - Fatal编程技术网

Javascript 错误类型错误:data.slice不是函数

Javascript 错误类型错误:data.slice不是函数,javascript,angular,Javascript,Angular,我正在使用一个JSON响应,并试图通过AngularMaterialMat表在UI中显示它。请找到所附的代码片段,让我知道我犯了什么错误,或者我需要改变我的方法来实现这一点吗 JSON Web服务 服务台 错误快照: 您的数据对象位于结果对象的内部。您需要执行以下操作: import { Component, OnInit, ViewChild } from '@angular/core'; import { Observable } from "rxjs"; import {MatSort,

我正在使用一个JSON响应,并试图通过AngularMaterialMat表在UI中显示它。请找到所附的代码片段,让我知道我犯了什么错误,或者我需要改变我的方法来实现这一点吗

JSON Web服务 服务台 错误快照:

您的
数据
对象位于
结果
对象的内部。您需要执行以下操作:

import { Component, OnInit, ViewChild } from '@angular/core';
import { Observable } from "rxjs";
import {MatSort, MatSortable, MatTableDataSource,PageEvent, MatPaginator} 
from '@angular/material';
import {SotServiceService} from '../sot-service.service';

@Component({
selector: 'app-sot-table',
templateUrl: './sot-table.component.html',
styleUrls: ['./sot-table.component.css']
})
export class SotTableComponent implements OnInit {
@ViewChild(MatSort) sort: MatSort;
@ViewChild(MatPaginator) paginator : MatPaginator;
dataSource;
//displayedColumns = ['id', 'name', 'username', 'email', 'phone', 'website'];
displayedColumns = ['request', 'status_cd', 'sales_rep', 'created_user', 
'modified_dt', 'action','no_of_btl'];
//displayedColumns=['userId','id','title','body']
constructor(private sotservice :SotServiceService) { }

ngOnInit() {
this.sotservice.getuser().subscribe(result => {

  if(!result){
    return ;
  }
  this.dataSource= new MatTableDataSource(result);
  this.dataSource.sort= this.sort;
  this.dataSource.paginator=this.paginator;
 })
 }

}

此错误是由于Web服务返回的数组引起的。 结果包含数据数组。为了避免data.slice不是函数错误,您需要将结果指向Wesley Coetzee提到的result.data。 您还可以安全地从服务中删除observable。如果不确定Sot对象,请将其替换为任意对象或将其删除

附言。 如果result.data中还有子数组,也会发生此错误。在这种情况下,你会这样做,
this.dataSource=新MatTableDataSource(res.data.yourSubArray)

请尝试更改此行
this.dataSource=new MatTableDataSource(结果)
this.datasource.result=results['Data']
然后在构造函数外部初始化数据源,如
datasource=new MatTableDataSource()

基本上,您在这里要做的是告诉您的代码,在我的结果中有一个名为Data的元素,所以请给我这个元素的值或数据,并将其分配给我的数据源,希望它有帮助,有类似的问题,这就是我解决它的方法,您应该使用它

ngOnInit() {
  this.sotservice.getuser()
    .subscribe(result => {
      if(!result){
        return;
      }

      this.dataSource= new MatTableDataSource(result.data);
      this.dataSource.sort= this.sort;
      this.dataSource.paginator=this.paginator;
  });
}

因为json文件中有一个名为“data”的键,其中包含数据对象的数组。

在错误的数据类型上使用slice函数时,有时会发生这种情况。Slice作用于数组,而不是对象。您可能正在尝试切片对象。

我的可观察流从本地indexedDB存储(无后端)返回数据,我的错误是在将流参数分配给MatTableDataSource之前未检查其数组长度,这导致了相同的类型错误。以下是我的解决方案:

this.dataSource = new MatTableDataSource(result.data);

只需确保数据是表的预期数据的数组/列表,否则将无法切片


发生简单的

是因为您试图分割对象。Slice在数组上工作,而不是在对象上。

如上所述,这不是有效的JSONTrue,但这可能是因为您刚刚获得了JSON(?)的一个片段,但问题是您的数组位于JSON的
data
属性内,所以我想您只需要数组……是的,您是对的,我附加了一个JSON片段。是的,我的数组在JSON的数据属性中,我试图从数据数组中检索值并将其显示在表{“data”:[{“action”:“Ok”,“created_user”:“ab28974”,“latest_instance”:7720104,“modified_dt”:“Fri,2018年7月13日08:05:26 GMT”,“no_of_btl”:20,“request”:238219884,“sales_rep”:“ab28974”,“status_cd”:“Keying In Progress”}]}如果您的对象中有多个对象,您将如何执行此操作?我尝试了(result.data),但收到错误“类型“sot[]”上不存在属性“data”您的json和您的模型不匹配,那么如果您的对象中有多个对象,您将如何做到这一点@WesleyCoetzee@BlueScoreMan什么意思?也许在SO上发布一个新问题并标记我,包括json等。
import { Component, OnInit, ViewChild } from '@angular/core';
import { Observable } from "rxjs";
import {MatSort, MatSortable, MatTableDataSource,PageEvent, MatPaginator} 
from '@angular/material';
import {SotServiceService} from '../sot-service.service';

@Component({
selector: 'app-sot-table',
templateUrl: './sot-table.component.html',
styleUrls: ['./sot-table.component.css']
})
export class SotTableComponent implements OnInit {
@ViewChild(MatSort) sort: MatSort;
@ViewChild(MatPaginator) paginator : MatPaginator;
dataSource;
//displayedColumns = ['id', 'name', 'username', 'email', 'phone', 'website'];
displayedColumns = ['request', 'status_cd', 'sales_rep', 'created_user', 
'modified_dt', 'action','no_of_btl'];
//displayedColumns=['userId','id','title','body']
constructor(private sotservice :SotServiceService) { }

ngOnInit() {
this.sotservice.getuser().subscribe(result => {

  if(!result){
    return ;
  }
  this.dataSource= new MatTableDataSource(result);
  this.dataSource.sort= this.sort;
  this.dataSource.paginator=this.paginator;
 })
 }

}
ngOnInit() {
  this.sotservice.getuser()
    .subscribe(result => {
      if(!result){
        return;
      }

      this.dataSource= new MatTableDataSource(result.data);
      this.dataSource.sort= this.sort;
      this.dataSource.paginator=this.paginator;
  });
}
this.dataSource = new MatTableDataSource(result.data);
ngOnInit() {
   this.dataStream = this.storageService.getDataStream().subscribe((activeDataList: any) => { 
      if (activeDataList.length) { 
         this.dataSource = new MatTableDataSource(activeDataList);
      }
   });
}