我以前通过提供文本输入构建了Angular 2列表过滤器,但那是在新的@angular/forms
模块发布之前,我还没有更新它。我最近开始了一个使用新表单模块的新项目,我不明白为什么我所做的不起作用。
很简单:一个设置了[(ngModel)]
的文本输入,ngModel
变量被传递到我的自定义管道中以过滤列表。这真的没那么难。但这是HTML:
<form class="form-horizontal" #filterForm="ngForm">
<div class="form-group">
<label class="control-label col-md-5">Filter List</label>
<div class="col-md-7">
<input type="text" name="filterText" class="form-control" [(ngModel)]="filterObj.match">
</div>
</div>
</form>
只是一个基本的form
。如果没有form
元素,我将ngModel
放在input
上时出错。
然后在中打印出列表:
<li *ngFor="let item of list | filter:filterObj">{{item.title}}</li>
问题是,即使在input
上设置了ngModel
,也不会检测到任何更改,并且列表永远不会更新。我通过在类中放入一个ngOnChanges
函数来监视该变量来进行确认,它从未更改。
其他人对新的@angular/forms
版本有这个问题吗?
要对此进行调试,请尝试像这样解耦ngModel
:
<input [value]="currentHero.firstName"
(input)="currentHero.firstName=$event.target.value" >