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