Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 基于承诺禁用按钮_Angular_Angular5_Angular Promise - Fatal编程技术网

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,我的方法比这个复杂假设这个方法在你的组件中,无需返回承诺我需要使用承诺,我的方法比此更复杂假设此方法在您的组件中,无需返回承诺