我有一个带有文本输入字段的表单,我希望在用户进行异步调用时禁用该表单。第一个也是最基本的方法是:
<input type="text" disabled="someBooleanVar" />
并将boolean var设置为false。但是因为我在代码中多次进行异步调用,所以我不想写
this.someBooleanVar = false
多次。相反,我有一个包含函数的服务,每次进行异步调用时都会调用该函数。所以我试图在该服务中编写一个boolean var,并在该服务的函数内切换它,因此执行如下操作:
<input type="text" disabled="serviceObj.someBooleanVar" />
但这种方法不起作用。有人能指出这里发生了什么吗?
答案 0 :(得分:0)
在GitHub上报告了一个类似的问题,似乎在设置属性时设置属性没有。你可以这样做:
<input type="text" [attr.disabled]="serviceObj.someBooleanVar ? 'disabled' : null" />
答案 1 :(得分:0)
您可以尝试BehaviorSubject
Plnkr:https://plnkr.co/edit/ReasP8DWhzR6lCwjtmjO?p=preview
服务:
private status$ = new BehaviorSubject(true);
public getStatus$(){
return this.status$.asObservable();
}
public setStatus$(status){
this.status$.next(status);
}
组件:
this.status$ = _service.getStatus$();
HTML:
<input type="text" [disabled]="status$ | async" />