直接在模型中映射Reactive FormGroup中的类对象,Setvalue和getvalue

时间:2018-10-10 15:28:22

标签: angular

我是新手。我正在开发一个企业应用程序。在应用程序中,有太多的模型包含50到100多个属性。对于许多属性,我必须根据某些条件在其他属性中设置值。

如果我使用FormGroup对象的Angular ValueChanges属性,并使用各自FormControl的getValue和setValue方法,那么代码将变得混乱,原因是模型中有100多个属性,包括子对象和数组对象。

我想基于我的模型绑定反应形式,当我更改HTMLControl中的值(文本框,下拉列表等)时,getter和setter属性将被调用。如果我更改模型属性的任何值,那么更改将自动反映在屏幕上。

为什么需要以上解决方案?

主要原因是它将减少代码大小,并且我不需要为每个属性都订阅和getValue / setValue方法。同样,代码的维护也很容易。

是否有可能实现这一目标?

我从项目中获得的一个模型:

export class Client {
    constructor()  {
    }

    _clnAbn:string;
        set clnAbn (value: string ){
            if(value == "xyz")
            this.clnAbnBranchNumber = "123";
            else
            this.clnAbnBranchNumber = "456";
        this._clnAbn = value;
        }

        get clnAbn(){
            return this._clnAbn;
        }

    clnAbnBranchNumber : string  ;
    clnAcn : string  ;
    clnActive : string  ;
    clnAddressLine1 : string  ;
    clnAddressLine2 : string  ;
    clnAward : string  ;
    clnBankKey : number ;
    clnBankAccountName : string  ;
    clnBankAccountNumber : string  ;
    clnBankBranch : string  ;
    clnBankBsb : string  ;
    clnBatchTimeSheets : string  ;
    clnCategory : string  ;
    clnClientName : string  ;
    clnCOnSolidATEInvoiceByContact : string  ;
    clnConsultantKey : number ;
    clnContactNotes : string  ;
    clnCreatedby : string  ;
    clnCreationDate : Date ;
    clnCreditCardDetails : string  ;
    clnDebtorCreditCard : string  ;
    clnDirectDebit : string  ;
    clnDirectDebitLimit : number ;
    clnDivision : string  ;
    clnDonotSendSms : string  ;
    clnEmail : string  ;
    clnEmailInvoice : string  ;
    clnEmailInvoiceToSupervisor : string  ;
    clnFaxNumber : string  ;
    clnGlJobNumber : string  ;
    clnHearDFrom : number ;
    clnHiringOrderNumber : string  ;
    clnId : number  ;
    clnIndustry : string  ;
    clnInterestOnInvoices : string  ;
    clnInterestPeriod : number ;
    clnInterestTax : string  ;
    clnInvoiceAttentionTo : string  ;
    clnInvoiced : string  ;
    clnInvoiceDailyTotals : string  ;
    clnLargeSizeBusiness : string  ;
    clnLastChanged : Date ;
    clnMediumSizeBusiness : string  ;
    clnMobileNumber : string  ;
    clnMotorCharge : string  ;
    clnNotes : string  ;
    clnOtsRegistered : string  ;
    clnPassword : string  ;
    clnPayEmployeeTax : string  ;
    clnPayEmployeeWages : string  ;
    clnPayGContactName : string  ;
    clnPaygFbtExempt : string  ;
    clnPayGGroupNumber : string  ;
    clnPayGOrganisationName : string  ;
    clnPayGSupplierNumber : string  ;
    clnPaymentTermsKey : number ;
    clnPaymentTermsRate : number ;
    clnPayRollTax : string  ;
    clnPhoneNumber : string  ;
    clnPostalAddressLine1 : string  ;
    clnPostalAddressLine2 : string  ;
    clnPostalPostCode : string  ;
    clnPostalState : string  ;
    clnPostalSuburb : string  ;
    clnPostCode : string  ;
    clnProspective : string  ;
    clnPublicSector : string  ;
    clnReceiveSFunding : string  ;
    clnRegistrationFormDate : Date ;
    clnRegistrationFormReceived : string  ;
    clnRetired : string  ;
    clnShowSupervisorOnInvoice : string  ;
    clnSignupDate : Date ;
    clnSingleInvoice : string  ;
    clnSmallBusiness : string  ;
    clnState : string  ;
    clnSuburb : string  ;
    clnSummaryCompanyKey : number ;
    clnSuperFund : string  ;
    clnTaxOnInvoice : string  ;
    clnTaxRebateKey : number ;
    clnTimeSheetNotes : string  ;
    clnTrade : string  ;
    clnTradingName : string  ;
    clnUpdatedBy : string  ;
    clnUSEPostalAddress : string  ;
    clnUserAwardInterpreter : string  ;
    clnUserEmittanceAddress : string  ;
    clnUserOLLingBilling : string  ;
    clnUserReference : string  ;
    clnUserStatusKey : number ;
    clnVendorNumber : string  ;
    clnWebsite : string  ;
    clnWhsStage3ConsultantKey : number ;
    clnWhsStage4ConsultantKey : number ;
    clnWhsThirdPartYSites : string  ;
    clnWorkCoverIndustryCode : string  ;
    clnWorkCoverRate : number ;

    hirings: Hiring[];
    timeSheets: TimeSheet[];
    employeeReportCards: EmployeeReportCard[];
    invoiceHistory: InvoiceHistory[];
    invoices: Invoice[];
    clientWhsStageOne: ClientWhsStageOne[];
    clientWhsStageTWo: ClientWhsStageTWo[];
    employeeTerminations: EmployeeTermination[];
    clientCorrspout: ClientCorrspout[];
    clientEbaAwards: ClientEbaAward[];
    clientCategories: ClientCategory[];
    clientContacts: ClientContact[];
    clientCorrspin: ClientCorrspin[];
    timeSheetHistory: TimeSheetHistory[];
    clientWhsStageFour: ClientWhsStageFour[];
    clientWhsStageThree: ClientWhsStageThree[];
    clientCustomFields: ClientCustomField[];
    clientContactNotes: ClientContactNote[];
    clientOhsFormTracking: ClientOhsFormTracking[];
    employeeInductions: EmployeeInduction[];
    clientSuperAccounts: ClientSuperAccount[];
    employeesuperEntitlements: EmployeesuperEntitlement[];

    ccgCategoryKey : string ;
    clnSummaryCompanyKeyValue : string ;
    clnConsultantKeyValue : string ;
    clnPaymentTermsKeyValue : string ;
    clnUserStatusKeyValue : string ;
    clnUserStatusKeyColorValue : string ;
    clnHeardFromKeyValue : string ;
    clnWorkCoverIndustryKeyValue : string ;
    clnDuePeriodKeyValue : string ;
    clnBankKeyValue : string ;
    clnAccountCategoryKeyValue : string ;
    wICrate : string ;
    clnInterestPeriodKeyValue : string ;
    primaryContactKeyValue : string ;
    primaryContactKey : string ;
}

0 个答案:

没有答案