0

我在控制台中收到一个错误,说明ERROR ReferenceError: sortedArr is not defined在我定义它并对其进行排序之后。

这是我的 app.component.ts 文件:

import { Component } from '@angular/core';
import { HttpClient, OnInit } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})

export class AppComponent implements OnInit {
  title = 'Contacts';
  contacts: any[] = this.contacts;

  constructor (private httpClient: HttpClient) {}

  ngOnInit(): void {
      //Pull JSON data from REST API
    this.httpClient.get('***URL TO JSON DATA***')
    .subscribe((data) => {
        this.contacts = data;

        //Sort JSON object
        let arr = this.contacts;
        let sortedArr = arr.sort( (a, b) => {
          return (typeof a.name === 'string') - (typeof b.name === 'string') || a.name - b.name || a.name.localeCompare(b.name);
          }););
        console.log(sortedArr);
    });
  }

已排序的对象数组绑定到我的 Web 应用程序页面上的 HTML,但它不在控制台中。当我刚刚定义并排序了这个数组时,为什么我会得到一个 ReferenceError?

我问的真正原因是因为我需要对这个对象数组做一些不同的事情才能让它正确地与我的 HTML 一起运行。它允许我通过我编写的函数对其进行排序,但我不能在sortedArray变量上调用另一个方法,因为它说它没有定义。

4

1 回答 1

2

您正在从错误的库中导入 OnInit

import { HttpClient } from '@angular/common/http';

将其更改为:

import { Component, OnInit } from '@angular/core';

错字:);-> 删除它,它将起作用let关键字将变量范围限制在块中,并且由于错字);,您无法在块范围之外访问它。

ngOnInit(): void {
      //Pull JSON data from REST API
    this.httpClient.get('***URL TO JSON DATA***')
    .subscribe((data) => {
        this.contacts = data;

        //Sort JSON object
        let arr = this.contacts;
        let sortedArr = arr.sort( (a, b) => {
          return (typeof a.name === 'string') - (typeof b.name === 'string') || a.name - b.name || a.name.localeCompare(b.name);
          }););--> remove it
        console.log(sortedArr);
    });
  }
于 2018-03-15T18:25:45.327 回答