ngOnInit中的引用错误

时间:2018-03-15 18:19:15

标签: javascript arrays angular sorting 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,但它不在控制台中。当我刚刚定义AND排序这个数组时,为什么我会得到一个ReferenceError?

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

1 个答案:

答案 0 :(得分: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);
    });
  }