簡體   English   中英

無法將可選屬性設置為 null

[英]cannot set optional property to null

我有一個 model class,我在其中定義了一個像這樣的可選屬性:

 export class Workflow { constructor( public id: number, public started: Date, public documentId: number, public document: Document, public status: WorkflowStatus, public workflowEvents: WorkflowEvent[], public startingUserId: number, public statusValue?: string, ) {} }

我也有一個 pipe ,它將狀態屬性轉換為字符串:

 import { Pipe, PipeTransform } from '@angular/core'; import { WorkflowStatus } from '../models/workflowstatus.enum'; @Pipe({ name: "status" }) export class WorkflowStatusPipe implements PipeTransform { public transform(value: WorkflowStatus): string { switch (value) { case WorkflowStatus.ForwardedToApprover: return "TOV"; case WorkflowStatus.ReadedByApprover: return "OLV"; case WorkflowStatus.Commented: return "MEGJ"; case WorkflowStatus.Approved: return "JÓV"; case WorkflowStatus.ForwardedToManager: return "MAN"; } } }

然后我有文檔對象。 對於每個文檔,我們可以有一個工作流程。 我通過 api 獲得文件:

 this.documentRepo.getDocuments().subscribe(documents => { documents.forEach(function (document) { document.workflow.statusValue = new WorkflowStatusPipe().transform(document.workflow?.status); }); this.documents = documents; });

如您所見,如果有工作流,我正在嘗試將狀態值轉換為字符串。 但我在控制台中收到此錯誤:'無法設置屬性'statusValue' of null'。

我真的不明白,為什么,因為我將statusValue屬性設置為可選屬性。

我應該如何修改代碼?

編輯:

這是來自 getDocuments 的結果的文檔 object:

在此處輸入圖像描述

另一個奇怪的事情:如果我只是像這樣簡單地將一個無意義的字符串分配給 statusValue,我會得到同樣的錯誤:

 this.documentRepo.getDocuments().subscribe(documents => { documents.forEach(function (document) { document.workflow.statusValue = "x";//new WorkflowStatusPipe().transform(document.workflow?.status); }); this.documents = documents; });

我認為您只需要處理屬性document.workflow不存在或者是 null 的情況。 為沒有工作流程的文檔設置默認工作流程值,或者只是跳過沒有工作流程的文檔中的處理,例如

this.documentRepo.getDocuments().subscribe(documents => {
  documents.forEach(function (document) {
    if (document.workflow) {
      document.workflow['statusValue'] = new WorkflowStatusPipe().transform(document.workflow?.status);
    }
  });
  this.documents = documents;
});

另請注意,如果document.workflow.status不是您的 switch 語句中考慮的值,您將得到未定義的結果。 根據您對那里的期望,您可能希望添加默認情況以返回不同的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM