Angular 基于承诺禁用按钮
我在使用基于承诺的禁用按钮时遇到问题,我的问题是,当对承诺求值并返回它的值时,它会重新求值,并且处于无限循环中:Angular 基于承诺禁用按钮,angular,angular5,angular-promise,Angular,Angular5,Angular Promise,我在使用基于承诺的禁用按钮时遇到问题,我的问题是,当对承诺求值并返回它的值时,它会重新求值,并且处于无限循环中: <button [disabled] = "(isDisabled('myEmail@email.com') | async)"> <mat-icon> delete </mat-icon> </button> isDisabled(email: string)
<button [disabled] = "(isDisabled('myEmail@email.com') | async)">
<mat-icon>
delete
</mat-icon>
</button>
isDisabled(email: string): Promise<boolean> {
return new Promise((resolve, reject) => {
resolve(this.emailAllowed !== email)
});
}
删除
isDisabled(电子邮件:string):承诺{
返回新承诺((解决、拒绝)=>{
解析(this.emailAllowed!==电子邮件)
});
}
这必须是一个承诺,因为我的方法更复杂,而且来自承诺
我怎么能说“只评估一次承诺”
我尝试使用“as”,但出现了一个错误:
<button [disabled] = "(isDisabled('myEmail@email.com') | async) as isDisabled">
Disabled
属性只接受布尔值,并且您的方法返回一个承诺
您需要更新方法以返回布尔值
isDisabled(email: string): boolean {
return new Promise((resolve, reject) => {
resolve(this.emailAllowed !== email)
});
}
Disabled
属性只接受布尔值,并且您的方法返回一个承诺
您需要更新方法以返回布尔值
isDisabled(email: string): boolean {
return new Promise((resolve, reject) => {
resolve(this.emailAllowed !== email)
});
}
我建议使用一种更简单的方法根据启动或解决承诺更新禁用 在html中:
[attr.disabled]="state"
在您的承诺更改值
state
中,我建议使用一种更简单的方法根据启动或解决承诺更新禁用
在html中:
[attr.disabled]="state"
在你的promise更改值的
状态中
为什么不在组件中调用isDisabled并在其基础上设置一个变量?为什么不在组件中调用isDisabled并在其基础上设置一个变量?我需要使用promise,我的方法比这个复杂假设这个方法在你的组件中,无需返回承诺我需要使用承诺,我的方法比此更复杂假设此方法在您的组件中,无需返回承诺