我正在使用Angular2反应形式,并且我想在用户键入时显示textarea
的字符计数。Angular2:如何显示反应形式输入字符计数
我希望只能够包含表单控件的name.length
在我的HTML像这样:
<div class="form-group">
<label for="incidentDescription">Brief Description of Incident</label>
<textarea id="incidentDescription" formControlName="incidentDescription" required [attr.maxLength]="maxIncidentDescriptionLength"></textarea>
<small><code>{{alaynaPage.incidentDescription.length}}</code> of <code>{{maxIncidentDescriptionLength}}</code> characters</small>
</div>
这个“作品”,然而表单控件的length
滞后一个按键的后面。因此,举例来说,如果我输入a
到textarea的{{alaynaPage.incidentDescription.length}}
为0。如果我再键入b
(因此字符串ab
){{alaynaPage.incidentDescription.length}}
现在是1
我如何得到这个达到预期效果?
我得到了它的通过破解工作,但必须有一个更简单的方法:
//in component:
theLength: number = 0;
ngOnInit(): void {
this.buildForm();
(this.alaynaPageForm.controls['incidentDescription'] as FormControl).valueChanges.subscribe(value => {
// do something with value here
this.theLength = value.length;
});
}
//in my html:
<small class="form-text text-muted"><code>{{theLength}}</code> of <code>{{maxIncidentDescriptionLength}}</code> characters</small>
让人惊讶 - 这是一个黑客。我只是想清楚如何干净地做。看我的答案 – rynop