Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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 2中的变量?_Angular - Fatal编程技术网

如何订阅Angular 2中的变量?

如何订阅Angular 2中的变量?,angular,Angular,我在组件中得到一个变量,声明为: public filter: Filter = {}; 在模板中,我绑定此对象,如下所示: <input [ngModel]="filter.name" value=""/> <input [ngModel]="filter.secondname" value=""/> 附言: 我不想对每个输入元素使用eventngChange=“”如果您想订阅它,那么您必须使它成为可订阅的可观察元素。即 filter: Observable<

我在组件中得到一个变量,声明为:

public filter: Filter = {};
在模板中,我绑定此对象,如下所示:

<input [ngModel]="filter.name" value=""/>
<input [ngModel]="filter.secondname" value=""/>
附言:
我不想对每个输入元素使用event
ngChange=“

如果您想订阅它,那么您必须使它成为可订阅的可观察元素。即

filter: Observable<Filter>;
或者,如果您没有使用服务来检索
过滤器
数据,您可以使用所需的值创建一个observable:
this.Filter=observable.of(myFilter)


然后,您可以在任何需要的地方订阅
this.filter
this.filter.subscribe(data=>…)
您可以使用Javascriptgettersetter方法


你能更准确地说明你想要实现的目标吗?有几个选项可用,这取决于您的需要。我不需要订阅服务,我需要订阅对可变权利的更改。您不必使用服务,但在某种形式下,您需要
过滤器
成为可观察的服务,才能订阅它。您的两个主要选项是使用
Observable.of(value)
将值转换为可观察值,或者如果您使用服务只是从服务中捕获可观察值。我将尝试解决以下问题:有一个包含一些行的表。每行中都有几个选择列表。这张桌子是由ngFor设计的。当我更改selectlist时,它会更改NgFor中的全局模型。因此,我只需要存储更改行,而不需要保存全局模型。我不确定使用Object.defineProperty,我们现在可以为对象属性定义getter和setter函数。这样做的目的是,无论何时对该属性名进行赋值,都会调用setter函数,无论何时请求该属性名,都会调用getter函数。现在,您可以在setter函数中执行所需的操作。为了进一步的参考,请查看上面提供的链接。我刚刚写了一篇博客文章,在这里演示了这一点:查看
listFilter
getter和setter,以及我如何使用它在每次更改其值时重新过滤数据。
filter: Observable<Filter>;
filter = this.someService.getFilter();