ngOnInit 中的引用错误

Reference Error inside ngOnInit

我在控制台上收到一条错误消息,在我定义并排序后显示 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);
    });
  }

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

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

您从错误的库中导入了 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);
    });
  }