Angular ошибка TS2339 Свойство не существует по типу - PullRequest
0 голосов
/ 04 августа 2020

Привет, ребята, недавно я начал изучать некоторые Angular.

В настоящее время я получаю следующую ошибку:

32  this.warning.error.push(entry.name+': '+entry.error);
                 ~~~~~
src/app/dashboard/dashboard.component.ts:33:15 - error TS2339: Property 'id' does not exist on type 'Warning[]'.

33  this.warning.id.push(entry.id);
                 ~~
src/app/dashboard/dashboard.component.ts:37:13 - error TS2339: Property 'error' does not exist on type 'Error[]'.

37  this.error.error.push(entry.name+': '+entry.error);
               ~~~~~
src/app/dashboard/dashboard.component.ts:38:13 - error TS2339: Property 'id' does not exist on type 'Error[]'.

38  this.error.id.push(entry.id);
               ~~

Проблема в том, что я определил интерфейсы для обоих, которые импортируются.

export interface Error {
        id: number;
        error: string;
        }

export interface Warning {
        id: number;
        error: string;
        }

Как вы можете видеть в моем компоненте.

import { Error, Warning } from '../dashboard';
...
export class DashboardComponent implements OnInit {
 error: Error[];
 warning: Warning[];
...

evaluate(): void{
        for (let entry of this.status){
        if (entry.status === 0){
                this.ok = this.ok + 1;
                }
        if (entry.status === 1 && entry.value < 8){
        this.warnings = this.warnings + 1;
        this.warning.error.push(entry.name+': '+entry.error);
        this.warning.id.push(entry.wt_id);
                }
        if (entry.status === 1 && entry.value >= 8){
        this.critical = this.critical + 1;
        this.error.error.push(entry.wt_name+': '+entry.error);
        this.error.id.push(entry.wt_id);
                }
        }
}

Я уже пробовал некоторые вещи, которые нашел в старых сообщениях, но ничего не работает.

Может быть, некоторые из вас ребята знают решение и могут указать на него. Может быть, я просто что-то упустил.

Ура!

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Вы не нажимаете на переменные-члены error или warning, а на свойства внутри переменных.

  1. Вам нужно либо изменить определения типов на массивы

Интерфейсы

export interface Error {
  id: number[];
  error: string[];
}

export interface Warning {
  id: number[];
  error: string[];
}

Компонент

export class DashboardComponent implements OnInit {
  error: Error;
  warning: Warning;
 
  ...
}
Или pu sh вместо переменных-членов. Как @GunnerB. указано в комментариях, массивы error и warning также необходимо инициализировать, прежде чем пытаться присвоить ему значения pu sh с помощью функции push.

Интерфейсы

export interface Error {
  id: number;
  error: string;
}

export interface Warning {
  id: number;
  error: string;
}

Компонент

export class DashboardComponent implements OnInit {
  error: Error[] = [];              // <-- initialize the arrays
  warning: Warning[] = [];
  ...

  evaluate(): void {
    for (let entry of this.status) {
      if (entry.status === 0) {
        this.ok = this.ok + 1;
      }
      if (entry.status === 1 && entry.value < 8) {
        this.warnings = this.warnings + 1;
        this.warning.push({id: entry.wt_id, error: entry.name + ': ' + entry.error });
      }
      if (entry.status === 1 && entry.value >= 8) {
        this.critical = this.critical + 1;
        this.error.push({id: entry.wt_id, error: entry.name + ': ' + entry.error });
      }
    }
  }
}
0 голосов
/ 04 августа 2020

Пожалуйста, измените его на: `this.warning.error = entry.wt_name + ':' + entry.error;

error в интерфейсе Warning строка, а не массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...