2017-07-27 93 views
0

所以我不断收到这个错误“TypeError:无法读取未定义的属性”otherDocumentaryEvidence“。我知道我需要初始化这个对象,但我不确定这个过程。我的理解是,对象被在ngOnInit阶段从模板服务定义如何初始化在OnInit中定义的嵌套对象? Angular2

ngOnInit(): void { 
    this._templateService 
     .getTemplateSnapshot(this.template) 
     .responseData() 
     .subscribe(templateSnapStream => { 
      return this.shareCase = templateSnapStream.result; 
     }) 
} 

我的目标看起来像这样

export class ShareCase { 
    shareCaseReason?: string; 
    caseDetails?: ICasedeit; 
    involvedPersonsAndOrganisations?: IInvolved; 
    policeOfficer?: IPolice; 
    incidents?: IIncident; 
    offences?: IOffence; 
    suspect?: ISuspectDetails 
    witnessStatements?: IStatements; 
    interviewNotes?: IIncident; 
    notebookEntries?: INotebook; 
    victims?: IVictim; 
    witnesses?: IWitness; 
    physicalEvidence?: IEvidence; 
    otherDocumentaryEvidence?: IDocEvidence; 
} 

在我的组件的代码,我初始化无论是分享案例对象和otherDocumentaryEvidence对象在像这样的构造函数中:

this.shareCase = new ShareCase(); 
this.shareCase.otherDocumentaryEvidence = new IDocEvidence(); 

但是我仍然得到相同的错误?我不确定这是为什么。在我的模板中调用此对象的行也看起来像这样

<div *ngIf='shareCase && shareCase.case.otherDocumentaryEvidence && shareCase.case.otherDocumentaryEvidence.length > 0'> 

任何帮助将不胜感激!

回答

1

你缺少额外的检查,在你*ngIf

<div *ngIf='shareCase && 
      shareCase.case && 
      shareCase.case.otherDocumentaryEvidence && 
      shareCase.case.otherDocumentaryEvidence.length > 0'> 

你缺少shareCase.case检查

+0

魔法!非常感谢! –

+0

高兴地帮助你 – Aravind

1

尝试增加对空/未定义检查问号。

<div *ngIf='shareCase && shareCase.case?.otherDocumentaryEvidence && shareCase.case?.otherDocumentaryEvidence.length > 0'>