Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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
通过服务禁用输入字段:Angular2_Angular - Fatal编程技术网

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

通过服务禁用输入字段:Angular2,angular,Angular,我有一个带有文本输入字段的表单,我想在用户进行异步调用时禁用该字段。第一种也是最基本的方法是: <input type="text" disabled="someBooleanVar" /> 多次。相反,我有一个包含函数的服务,每次异步调用时都会调用该函数。因此,我尝试在该服务中编写一个布尔变量,并在该服务的函数中切换它,从而执行如下操作: <input type="text" disabled="serviceObj.someBooleanVar" /> 但这种

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

<input type="text" disabled="someBooleanVar" />
多次。相反,我有一个包含函数的服务,每次异步调用时都会调用该函数。因此,我尝试在该服务中编写一个布尔变量,并在该服务的函数中切换它,从而执行如下操作:

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


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

报告了一个类似的问题,似乎设置属性有效,而设置属性无效。您可以这样做:

<input type="text" [attr.disabled]="serviceObj.someBooleanVar ? 'disabled' : null" />

您可以尝试
行为主题

Plnkr:

服务:

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


您是否尝试将
禁用的=“serviceObj.someBooleanVar”
更改为
[disabled]=“serviceObj.someBooleanVar”
?@awmler,是的,我尝试了,没有成功。您是否尝试了
[disabled]=“serviceObj.someBooleanVar”
并将服务变量设置为
true
?变量必须是
true
才能禁用控件。是的,我在每次异步调用时调用的服务函数内将其设置为true,@connorsfan是否将服务分配给组件?在组件的构造函数中,您是否只执行了
构造函数(serviceObj)
?或者您是使用
构造函数(public serviceObj)
分配它的吗?刚刚尝试过这种方法,这会禁用输入文本字段,而不管布尔值如何。您可以使用字符串变量(
“true”
“false”
)进行尝试。我修改了我的答案以显示一种方法。不,即使字符串值也不起作用。但是def出错了,我检查了元素“…清楚地显示disabled属性为false,输入属性仍然为disabled我再次修改了我的答案:-”谢谢,但这也不起作用。可能是角度方面的错误?
<input type="text" [disabled]="status$ | async" />