javascript - 按钮禁用和 ngIf 在相同条件下工作
问题描述
我创建了一个材质对话框,并两次调用相同的方法 - 内部*ngIf
和内部按钮[disabled]
属性。
我的材质对话框:
<div mat-dialog-content>
<p>Insert package name:</p>
<mat-form-field>
<mat-label class="font-weight-bold">Package name</mat-label>
<input matInput #newPackageName>
</mat-form-field>
</div>
<ng-container *ngIf="existPackageName(newPackageName.value)">
<p class="alert alert-danger" role="alert">Exist package with same name!!!</p>
</ng-container>
<div mat-dialog-actions>
<button mat-button class="btn btn-secondary" [mat-dialog-close]="newPackageName.value" cdkFocusInitial [disabled]="existPackageName(newPackageName.value)">Create
</button>
<button mat-button class="btn btn-secondary" (click)="onNoClick()">Cancel</button>
</div>
我的打字稿:
@Component({
selector: 'new-package-dialog',
templateUrl: './new-package/new-package-dialog.component.html',
styleUrls: ['app.component.css']
})
export class NewPackageDialog {
constructor(
public dialogRef: MatDialogRef,
@Inject(MAT_DIALOG_DATA) public data: DialogData) {
}
onNoClick(): void {
this.dialogRef.close();
}
existPackageName(newPackageName: string) {
return newPackageName.length > 0 && this.data.packages.some(package => package.name === newPackageName);
}
}
export interface DialogData {
packages: IPackage[];
}
问题:有没有办法调用existPackageName(newPackageName.value)
一次方法并将结果传递给按钮[disabled]
属性?
解决方案
您可以在组件中:
this.shouldDisable = this.existPackageName(this.newPackageName)
然后简单地说:
<input matInput [(ngModel)]="newPackageName">
...
<ng-container *ngIf="shouldDisable">
...
<button [disabled]="shouldDisable" ..rest of the properties>
推荐阅读
- visual-studio - 在 VS 的 MSI 设置中强制文件随 Windows 自动启动
- c# - why I couldn't see the referenced dll module hosted by a process
- sql - Oracle - 按日期区分组
- java - how can i still get this problem after i mention the service in the manifest
- javascript - How do I use requirejs in the browser?
- r - Generate Absolute xpath of given webElement in RSelenium [R]
- bash - How to run commands after login to shell command of a container in a VM?
- java - 除非我使用 .join(),否则为什么同步方法不会被锁定?
- css - 适合在 Flexbox/Grid 中缩放的图像行?
- php - htaccess 用查询字符串重写规则 seo 友好的 url