我是新手。我正在开发一个企业应用程序。在应用程序中,有太多的模型包含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 ;
}