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