首页 > 解决方案 > 缺少试图修补状态的属性

问题描述

我正在尝试解码 ssl 证书并修补数组属性的状态。这就是我现在正在做的事情:

状态模型

export interface CertificateStateModel {
  certificate: CertificateObject;
  certificates: Certificate[];
  searchLimitedStateMessage: string;
  emptyCertificateMessage: string;
  searchTerm: any;
}

@State<CertificateStateModel>({
  name: "certificate",
  defaults: {
    certificate: null,
    certificates: [],
    searchLimitedStateMessage: SearchMessages.typeToSearch,
    emptyCertificateMessage: SearchMessages.typeToSearch,
    searchTerm: null,
  },
})

解码证书的功能

function decodeCert(CertificateObject) {
  if (CertificateObject)
  for (let entity of CertificateObject) {
    const certPem = atob(entity)
    console.log(entity)
          const cert = pki.certificateFromPem(certPem)
          const fingerprint = forge.md.sha1.create().update(forge.asn1.toDer(forge.pki.certificateToAsn1(cert)).getBytes()).digest().toHex();
          const currentDate = new Date();
          const daysToExpire = cert.validity.notAfter.valueOf() - currentDate.valueOf();

            let certificates = {
                name: entity.name,
                issueDate: cert.validity.notBefore,
                expiryDate: cert.validity.notAfter,
                fingerPrint: fingerprint,
                serialNumber: cert.serialNumber,
                daysToExpire: daysToExpire / 86400000,
            }
            return certificates;
        }
  }

获取证书和补丁状态的操作:

@Action(CertificateAction.GetAllCertificates)
  getAllCertificates(
    ctx: StateContext<CertificateStateModel>,
    action: CertificateAction.GetAllCertificates
  ) {

    ctx.dispatch(new Busy(true));
    return this.svc.getAllCertificates().pipe(
      tap((certificate) => {
        ctx.patchState({
          certificate: decodeCert(certificate)
        });
        ctx.dispatch(new Busy(false));
        console.log(certificate)
      },
      (error: any) => {
        ctx.dispatch([
          new DisplayMessage({type: "error", list: [ "Get All Certificates Error", error.error ]}),
          new Busy(false)
        ]);
      })
    );
  }

这将返回错误:'certificate.state.ts(22, 3):预期类型来自属性'certificate',它在此处声明为'Partial'类型

我是 NGXS 的新手,在这里有点迷失。任何帮助将不胜感激。提前致谢

标签: angulartypescriptangular9ngxs

解决方案


推荐阅读