基于承诺禁用按钮
disable button based on promise
我在使用基于 promise 的禁用按钮时遇到问题,我的问题是当 promise 被评估并且 returns 它值时,它被重新评估并且它处于无限循环中:
<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)
});
}
必须是promise,因为我的方法比较复杂,来自promise。
我怎么说 "evaluate the promise just once"?
我尝试使用 "as",但出现错误:
<button [disabled] = "(isDisabled('myEmail@email.com') | async) as isDisabled">
Disabled
属性只接受布尔值,你的方法是 returning 一个 Promise。
您需要将方法更新为 return 布尔值。
isDisabled(email: string): boolean {
return new Promise((resolve, reject) => {
resolve(this.emailAllowed !== email)
});
}
我建议一种更简单的方法来更新禁用基于开始或解决承诺,
在html中:
[attr.disabled]="state"
并在您的承诺中更改 state
的值。
我在使用基于 promise 的禁用按钮时遇到问题,我的问题是当 promise 被评估并且 returns 它值时,它被重新评估并且它处于无限循环中:
<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)
});
}
必须是promise,因为我的方法比较复杂,来自promise。
我怎么说 "evaluate the promise just once"?
我尝试使用 "as",但出现错误:
<button [disabled] = "(isDisabled('myEmail@email.com') | async) as isDisabled">
Disabled
属性只接受布尔值,你的方法是 returning 一个 Promise。
您需要将方法更新为 return 布尔值。
isDisabled(email: string): boolean {
return new Promise((resolve, reject) => {
resolve(this.emailAllowed !== email)
});
}
我建议一种更简单的方法来更新禁用基于开始或解决承诺,
在html中:
[attr.disabled]="state"
并在您的承诺中更改 state
的值。