You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:12:39