通过服务禁用输入字段:Angular2

时间:2017-06-24 14:07:00

标签: angular

我有一个带有文本输入字段的表单,我希望在用户进行异步调用时禁用该表单。第一个也是最基本的方法是:

<input type="text" disabled="someBooleanVar" />

并将boolean var设置为false。但是因为我在代码中多次进行异步调用,所以我不想写

this.someBooleanVar = false

多次。相反,我有一个包含函数的服务,每次进行异步调用时都会调用该函数。所以我试图在该服务中编写一个boolean var,并在该服务的函数内切换它,因此执行如下操作:

<input type="text" disabled="serviceObj.someBooleanVar" />

但这种方法不起作用。有人能指出这里发生了什么吗?

2 个答案:

答案 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" />