Angular 11 中 *NgIf 的常见条件
Common conditions for *NgIf in Angular 11
我正在使用 angular 11 开发一个前端,并且有多个地方我需要在相同条件下应用 *ngIf,
<mat-option *ngIf="horizontalStepperForm.value.step2.companyType == 'Head_Office'" value="Light">Light</mat-option>
<mat-option *ngIf="horizontalStepperForm.value.step2.companyType == 'Head_Office'" value="Basic">Basic</mat-option>
<mat-option *ngIf="horizontalStepperForm.value.step2.companyType == 'Head_Office'" value="Professional">Professional</mat-option>
这些值是从 FormGroup 中捕获的,是否有任何方法可以解决相同的情况,使用一种方法来减少在 HTML 中各处对相同事物进行硬编码?
将其包装在组件中的函数中 class:
isCompanyTypeHeadOffice() {
return horizontalStepperForm.value.step2.companyType == 'Head_Office'
}
那么你可以这样做:
<mat-option *ngIf="isCompanyTypeHeadOffice()" value="Light">Light</mat-option>
<mat-option *ngIf="isCompanyTypeHeadOffice()" value="Basic">Basic</mat-option>
<mat-option *ngIf="isCompanyTypeHeadOffice()" value="Professional">Professional</mat-option>
我们经常做这件事;不仅针对重复条件,而且我认为在模板中保留逻辑是一种反模式。最好将该逻辑放在组件 class 中,这样可以更轻松地对其进行单元测试。
还是推荐
get bool():boolean{
return this.horizontalStepperForm.value.step2.companyType == 'Head_Office'
}
<mat-option *ngIf="bool" value="Light">Light</mat-option>
我正在使用 angular 11 开发一个前端,并且有多个地方我需要在相同条件下应用 *ngIf,
<mat-option *ngIf="horizontalStepperForm.value.step2.companyType == 'Head_Office'" value="Light">Light</mat-option>
<mat-option *ngIf="horizontalStepperForm.value.step2.companyType == 'Head_Office'" value="Basic">Basic</mat-option>
<mat-option *ngIf="horizontalStepperForm.value.step2.companyType == 'Head_Office'" value="Professional">Professional</mat-option>
这些值是从 FormGroup 中捕获的,是否有任何方法可以解决相同的情况,使用一种方法来减少在 HTML 中各处对相同事物进行硬编码?
将其包装在组件中的函数中 class:
isCompanyTypeHeadOffice() {
return horizontalStepperForm.value.step2.companyType == 'Head_Office'
}
那么你可以这样做:
<mat-option *ngIf="isCompanyTypeHeadOffice()" value="Light">Light</mat-option>
<mat-option *ngIf="isCompanyTypeHeadOffice()" value="Basic">Basic</mat-option>
<mat-option *ngIf="isCompanyTypeHeadOffice()" value="Professional">Professional</mat-option>
我们经常做这件事;不仅针对重复条件,而且我认为在模板中保留逻辑是一种反模式。最好将该逻辑放在组件 class 中,这样可以更轻松地对其进行单元测试。
还是推荐
get bool():boolean{
return this.horizontalStepperForm.value.step2.companyType == 'Head_Office'
}
<mat-option *ngIf="bool" value="Light">Light</mat-option>