Angular 7中如何控制函数内IF条件仅在添加银行时执行
解决Angular 7中函数根据操作类型执行差异化逻辑的问题
你的核心需求很明确:checkNonEnglishCharacterCountries函数要在添加和编辑银行时都完整执行,但其中**当countryName为China时设置bankAccountName和partyAccountNameAlt**的逻辑,仅在点击“添加银行”时触发。之前的尝试没成功,主要是因为没有保留原函数的完整逻辑,且可能在调用环节的参数传递有疏漏。下面是具体的修正方案:
步骤1:修改函数,保留完整逻辑并新增操作类型参数
我们给函数新增一个operationType参数用来区分“添加”和“编辑”操作,同时把需要差异化执行的逻辑用这个参数做判断包裹,原函数的通用逻辑保持不变:
private checkNonEnglishCharacterCountries(countryName: string, operationType: string) { // 仅在添加银行时执行的差异化逻辑 if (operationType === 'BANK_ADD' && countryName === 'China') { this.payment.bankAccountName = null; this.payment.partyAccountNameAlt = this.supplierData.legalName; } // 以下是函数的通用逻辑,添加/编辑操作都会执行 if (countryName === 'China') { this.selectedCountryValidator = '^[\\u4E00-\\u9FCC]+$'; this.accountBeneficiaryName = 'Simplified Chinese characters - 简化字 '; this.branchNameLocal = 'Simplified Chinese characters - 简化字 '; this.bankNameLocal = 'Simplified Chinese characters - 简化字 '; } else { this.selectedCountryValidator = ''; this.accountBeneficiaryName = 'Please provide account (Beneficiary) name'; this.branchNameLocal = 'Please provide branch name'; this.bankNameLocal = 'Please provide institution name'; } this.cdRef.detectChanges(); }
步骤2:确保调用函数时正确传递操作类型参数
接下来要在点击事件对应的处理函数里,把操作类型参数传递给checkNonEnglishCharacterCountries:
添加银行按钮的调用逻辑
你的添加按钮已经传递了'BANK_ADD',只需要在addBank函数里调用目标函数时带上这个参数:
<button (click)="addBank(payment, 'BANK_ADD')"> Add Bank </button>
addBank(payment: any, operationType: string) { // 你的其他添加银行逻辑... const currentCountryName = /* 替换成获取当前选中国家名称的代码 */; // 调用函数并传递操作类型 this.checkNonEnglishCharacterCountries(currentCountryName, operationType); }
编辑银行按钮的调用逻辑
编辑按钮传递了'BANK_UPDATE',同样在对应的处理函数里传递参数:
<img (click)="editSearchPaymentTabInfo('SUPPLIER_BANK_UPDATE', banks, 'BANK_UPDATE')"/>
editSearchPaymentTabInfo(type: string, banks: any[], operationType: string) { // 你的其他编辑银行逻辑... const currentCountryName = /* 替换成获取当前编辑银行对应的国家名称的代码 */; // 调用函数并传递操作类型 this.checkNonEnglishCharacterCountries(currentCountryName, operationType); }
关键说明
- 差异化逻辑通过
operationType === 'BANK_ADD'做判断,确保只在添加操作时执行,编辑时跳过这段赋值逻辑。 - 原函数的所有通用逻辑(比如校验规则、提示文本的设置)在两种操作下都会完整执行,满足你“函数整体两次都执行”的需求。
- 注意要正确获取
countryName参数,确保传递的是当前操作对应的国家名称。
内容的提问来源于stack exchange,提问作者spectra info
相关产品推荐
相关产品推荐

