Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 打字脚本可以';t访问公共财产:财产';PropName';不在'上退出;类名';_Angular_Typescript - Fatal编程技术网

Angular 打字脚本可以';t访问公共财产:财产';PropName';不在'上退出;类名';

Angular 打字脚本可以';t访问公共财产:财产';PropName';不在'上退出;类名';,angular,typescript,Angular,Typescript,我有一个TypeScript类,有15个属性。其中14个由WebAPI调用的响应填充。另一个将在以后设置 由于某些原因,我收到以下错误: ./ClientApp/app/components/home/incidentable.component.ts中出错 (45,18):错误TS2339:属性“CurrentStatusCSClasses”不存在 “IncidentNode”类型上存在 这是我的班级: export class IncidentNode { public Curren

我有一个TypeScript类,有15个属性。其中14个由WebAPI调用的响应填充。另一个将在以后设置

由于某些原因,我收到以下错误:

./ClientApp/app/components/home/incidentable.component.ts中出错 (45,18):错误TS2339:属性“CurrentStatusCSClasses”不存在 “IncidentNode”类型上存在

这是我的班级:

export class IncidentNode {
    public CurrentStatusCssClasses: string[];
    public RetrievalId: number;
    public IncidentId: number;
    public Name: string;
    public IPAddress: string;
    public MonitorStartTime: string;
    public LastStatusTime: string;
    public IssueTime: string;
    public IssueStatus: string;
    public LastAnalysisTime: string;
    public CurrentStatus: string;
    public LastProblemTime: string;
    public ProblemCount: number;
}
import { Component, Input, OnInit } from '@angular/core';
import { Observable, Subscription, Subject } from 'rxjs';
import * as moment from 'moment';
import { IncidentNode } from './IncidentNode';

@Component({
    selector: 'incident-node-table',
    template: require('./IncidentTable.component.html'),
    styles: [require('./IncidentTable.component.css')]
})
export class IncidentNodeTableComponent implements OnInit {

    @Input() parentSubject: Subject<any>;
    @Input() tableTitle: string;
    IncidentNodes: IncidentNode[] = null;

    ngOnInit() {
        this.parentSubject.subscribe(event => {
            if (event != null) {
                this.IncidentNodes = event;
                this.formatFields();
            }
        });
    }

    formatFields() {
        for (let i = 0; i < this.IncidentNodes.length; i++) {
            let node = this.IncidentNodes[i];
            if (node.IssueTime != null) {
                node.IssueTime = this.formatDateInternal(node.IssueTime);
            }
            if (node.LastAnalysisTime != null) {
                node.LastAnalysisTime = this.formatDateInternal(node.LastAnalysisTime);
            }
            if (node.LastProblemTime != null) {
                node.LastProblemTime = this.formatDateInternal(node.LastProblemTime);
            }
            if (node.LastStatusTime != null) {
                node.LastStatusTime = this.formatDateInternal(node.LastStatusTime);
            }
            if (node.MonitorStartTime != null) {
                node.MonitorStartTime = this.formatDateInternal(node.MonitorStartTime);
            }

            node.CurrentStatusCssClasses.push("glyphicon");
            if (node.CurrentStatus == "UpAndActive") {
                node.CurrentStatusCssClasses.push("glyphicon-circle-arrow-down");
            }
            else if (node.CurrentStatus == "NodeOn3GBackup") {
                node.CurrentStatusCssClasses.push("glyphicon-signal");
            } else if (node.CurrentStatus == "UpAndActive") {

            }
        }
    }

    formatDateInternal(dateString: string) {
        let utcDate = moment.utc(dateString);
        let localDate = moment(utcDate).local();
        return localDate.format('MM/DD/YYYY HH:mm:ss');
    }
}
这是组件(错误发生在带有
节点的行上。CurrentStatusCSClasses.push()
):

export class IncidentNode {
    public CurrentStatusCssClasses: string[];
    public RetrievalId: number;
    public IncidentId: number;
    public Name: string;
    public IPAddress: string;
    public MonitorStartTime: string;
    public LastStatusTime: string;
    public IssueTime: string;
    public IssueStatus: string;
    public LastAnalysisTime: string;
    public CurrentStatus: string;
    public LastProblemTime: string;
    public ProblemCount: number;
}
import { Component, Input, OnInit } from '@angular/core';
import { Observable, Subscription, Subject } from 'rxjs';
import * as moment from 'moment';
import { IncidentNode } from './IncidentNode';

@Component({
    selector: 'incident-node-table',
    template: require('./IncidentTable.component.html'),
    styles: [require('./IncidentTable.component.css')]
})
export class IncidentNodeTableComponent implements OnInit {

    @Input() parentSubject: Subject<any>;
    @Input() tableTitle: string;
    IncidentNodes: IncidentNode[] = null;

    ngOnInit() {
        this.parentSubject.subscribe(event => {
            if (event != null) {
                this.IncidentNodes = event;
                this.formatFields();
            }
        });
    }

    formatFields() {
        for (let i = 0; i < this.IncidentNodes.length; i++) {
            let node = this.IncidentNodes[i];
            if (node.IssueTime != null) {
                node.IssueTime = this.formatDateInternal(node.IssueTime);
            }
            if (node.LastAnalysisTime != null) {
                node.LastAnalysisTime = this.formatDateInternal(node.LastAnalysisTime);
            }
            if (node.LastProblemTime != null) {
                node.LastProblemTime = this.formatDateInternal(node.LastProblemTime);
            }
            if (node.LastStatusTime != null) {
                node.LastStatusTime = this.formatDateInternal(node.LastStatusTime);
            }
            if (node.MonitorStartTime != null) {
                node.MonitorStartTime = this.formatDateInternal(node.MonitorStartTime);
            }

            node.CurrentStatusCssClasses.push("glyphicon");
            if (node.CurrentStatus == "UpAndActive") {
                node.CurrentStatusCssClasses.push("glyphicon-circle-arrow-down");
            }
            else if (node.CurrentStatus == "NodeOn3GBackup") {
                node.CurrentStatusCssClasses.push("glyphicon-signal");
            } else if (node.CurrentStatus == "UpAndActive") {

            }
        }
    }

    formatDateInternal(dateString: string) {
        let utcDate = moment.utc(dateString);
        let localDate = moment(utcDate).local();
        return localDate.format('MM/DD/YYYY HH:mm:ss');
    }
}
从'@angular/core'导入{Component,Input,OnInit};
从“rxjs”导入{observatable,Subscription,Subject};
从“时刻”导入*作为时刻;
从“./IncidentNode”导入{IncidentNode};
@组成部分({
选择器:“事件节点表”,
模板:require('./incidentable.component.html'),
样式:[需要('./incidentable.component.css')]
})
导出类IncidentNodeTableComponent实现OnInit{
@输入()父主题:主题;
@Input()tableTitle:字符串;
IncidentNodes:IncidentNode[]=null;
恩戈尼尼特(){
this.parentSubject.subscribe(事件=>{
如果(事件!=null){
this.IncidentNodes=事件;
这个.formatFields();
}
});
}
formatFields(){
for(设i=0;i
您的CurrentStatusCssClass是一个字符串数组。但是,您需要首先创建该数组(即使它是空的)。您可以在subscribe事件处理程序中分配它,或者创建CurrentStatusCssClasses类的构造函数并在那里执行

constructor () {
       this.CurrentStatusCssClasses =  [];
}

正如tom schier所说,CurrentStatusCssClass不存在,您需要在将内容推入它之前实例化它。这就是我要做的:

CurrentStatusCssClassses: Array<string> = [];
currentStatusCSSClasses:Array=[];

奇怪。这就是你的密码吗?它是否只抱怨
CurrentStatusCSClasses
属性?如果您对这些部分进行注释,其他所有部分都可以编译吗?OP询问编译错误。您的建议将以运行时错误结束。这是正确的。尽管如此,您仍然可以按原样使用上述代码创建编译时错误,这取决于您的tsconfig设置(例如set strictNullChecks),它将创建编译错误,尽管不是上面的错误。可能存在导致此错误的设置组合,这也取决于ts版本。