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

在Typescript的服务中显示为未定义的类型

裘禄
2023-03-14

我想在前端将一个字符串拆分为json格式,但我的服务和组件之间存在类型不匹配的问题。

我接收的阵列如下所示:

0:Active,1:Logged In,2:Password tries exceeded,3:Force password change,4:Expired,5:Disabled

我在控制台日志中成功地分离了阵列,但是当我想将它们设置到我的双矩阵阵列中时,它们不匹配或显示为未定义。

服务ts

import 'rxjs/add/observable/from';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';

import { Injectable } from '@angular/core';
import { Headers, Http, RequestOptions } from '@angular/html" target="_blank">http';
import { UpdateGroup } from '../_models/updateGroup';


@Injectable()
export class StatusService {

    private splitList : String[];
    //parsedList : {id: String, name: String}[];
    private parsedList : String[][];
    constructor(private http: Http) {

    }

    parseList(toParse : String): String[][] {
        var fieldCount = Number.parseInt(toParse.substr(0, 1));
        toParse = toParse.substr(1);
        this.splitList = toParse.split(/(?::|,)/);
        console.log("Found string " + toParse);
        console.log("Field count is " + fieldCount);
        console.log("splitList length is " + this.splitList.length);

        for (let index = 0; index < this.splitList.length; index++) {
            console.log(this.splitList[index]);         
        }

        console.log("new length is " + this.splitList.length/fieldCount);
        this.parsedList = String[this.splitList.length/fieldCount][fieldCount]; //does not work


        for (let i = 0; i < this.splitList.length; i+=fieldCount) {
            for(let j = 0; j < fieldCount; j++)
                this.parsedList[i/fieldCount][j] = this.splitList[i+j];          
        }

        return this.parsedList;
      }
}

组成部分ts

import { StatusService } from './../../../../_services/status.service';


@Component({
  selector: 'update-form',
  templateUrl: './updateForm.html',
})

export class UpdateFormComponent implements OnInit {

  public statusList: String[][];
  public groupList: String[][];

  constructor(private http: Http, fb: FormBuilder, protected service: UpdateUserService,
    private statusService: StatusService,
    protected router: Router,
    private _location: Location,
  ) {}


ngOnInit() {

    this.formService.myUser.filter(user => user !== null)
      .subscribe(user => {

        this.statusList = this.statusService.parseList(this.myUser.STATUS_LIST);
        this.groupList = this.statusService.parseList(this.myUser.GROUP_LIST);

      });


  }
}

im获取的错误与服务和组件有关,由于某些原因,它无法读取数组以在服务中设置它

错误类型错误:无法读取属性'2'的未定义的状态ervice.push../src/app/_services/status.service.ts.状态ervice.parse列表(status.service.ts:39)在SafeSubcriber._next(updateForm.component.ts:162)在SafeS<--plhd--__tryOrUnsub(Subscriber.js:253)在SafeSubscriber.push.。/node_modules/rxjs/_esm5/内部/Subscriber.js.SafeSubscriber.next(Subscriber.js:191)在Subscriber.push.。/node_modules/rxjs/_esm5/内部/Subscriber.js.订阅者。_next(Subscriber.js:129)在Subscriber.push.。/node_modules/rxjs/_esm5/内部/Subscriber.js.Subscriber.next(Subscriber.js:93)在FilterSubscriber.push./node_modules/rxjs/_esm5/内部/操作员/filter. js。FilterSubcriber._next(filter. js: 85)在FilterSubcriber. ush.../node_modules/rxjs/_esm5/内部/订阅. js。下一步(订阅. js: 93)在行为主题。推.../node_modules/rxjs/_esm5/内部/主题。/node_modules/rxjs/_esm5/内部/行为主体。下一个问题

共有1个答案

岳嘉悦
2023-03-14

在typescript中,=用于赋值,而不是指定类型。

当你这样做时:

this.parsedList = String[this.splitList.length/fieldCount][fieldCount]

正在尝试为此赋值的。parsedList,但它失败了,因为没有名为字符串的变量(因为它是一种类型,而不是一个值)。

相反,由于数组在js/typescript中是动态调整大小的,因此您可以这样分配:

this.parsedList = [];

这将创建一个一维数组。然后在循环中,您可以执行以下操作:

for (let i = 0; i < this.splitList.length; i+=fieldCount) {
    this.parsedList[i/fieldCount] = []; // Assign an array to make it a 2d array
    for(let j = 0; j < fieldCount; j++)
        this.parsedList[i/fieldCount][j] = this.splitList[i+j];          
}

 类似资料:
  • 我通过jQuery ajax调用一个Web服务。在浏览器中检查时,从服务返回的响应似乎很好,如下所示: 当我通过jQueryAjax调用得到相同的结果时,它显示为未定义。 此处“数据”显示为对象文档, “cont”显示为未定义 当我试图提醒“jqxhr”参数时,它显示了来自web服务的所有数据,并且状态为OK。我在大多数帖子和博客上都试过了,但都找不到哪里出了问题。请帮忙。

  • 您好,我正在使用。 }下面是各自的xml: 在适配器获取视图:公共视图getView(int位置,视图转换视图,ViewGroup父){ ImageLoader。从这里开始的Java 在从服务器加载映像之前,如何在中显示临时映像。

  • 我不知道为什么自定义文章类型的自定义分类不显示在管理列中(它消失了)。 以下是始终有效的代码: 如下所述: https://codex.wordpress.org/Function_Reference/register_taxonomy 第二个参数设置为null,因为在使用register\u post\u type()时,我将分类法与自定义post类型相关联 我不知道为什么代码停止工作了。我从3

  • 我正在尽我最大的努力,但我无法找到我的解决方案。 sugarcrm。尝试安装时,日志文件出现以下错误。 2017年11月1日星期三07:06:13[651035][无-][致命]创建表时出错:aos\u products\u quotes:查询失败:创建表aos\u products\u quotes(id char(36)不为NULL,名称文本NULL,date\u entered dateti

  • 我按照这个指令创建了一个grpc服务器和客户端:https://docs . Microsoft . com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.0 当我尝试从客户端调用服务时,客户端会显示以下错误消息:“发生了一个或多个错误。(状态(StatusCode=Unknown,Detail=No Status re

  • 所以,我有一个main活动,它有一个启动服务的按钮,MyService。我希望该服务显示带有自定义标题、文本、图标等的通知。该服务是一个前台服务。不是绑定服务。一切正常,但唯一的一点是关于我的通知是不断显示“点击获取更多信息”,点击它会引导我进入应用程序的设置页面。尽管我的主要活动是悬而未决的。 我想要的是有一个带有自定义标题、文本、图标和停止服务的操作的通知。 这是我的主要活动。java类 我的