[英]how to use split in angular5 for wordcount
我正在尝试在textarea中进行字数统计,但页面加载后会显示Words:1。 这是什么问题,我需要做什么。 谁能告诉我。
提前致谢。
我的component.html
<textarea [(ngModel)]="review.Roman" name="Roman" id='text' required></textarea>
<p>Words:{{value.length}}</p>
我的component.ts
export class PostReviewComponent implements OnInit {
value: any = {};
reviews: Reviews[];
review: Reviews = {
Roman:''
};
ngOnInit() {
var str = this.review.Roman;
this.value = str.split(' ');
}
}
我的Reviews数组中没有更多的值,这里我只显示罗马字。
let re = /\s/g
this.value=str.split(re)
您只需要使用RE代替硬编码空间
让我知道是否有任何问题
页面加载后显示的原因是由于ngOnInit
方法中包含的代码会在页面加载时执行。
最好的方法是使用角形管道,并使用这种方式可以在代码中的任何地方重新利用。 有这样的事情:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'wordsCount'})
export class WordsCountPipe implements PipeTransform {
transform(value: string): number {
return value.split(' ').length;
}
}
然后在您的component.html
<textarea [(ngModel)]="review.Roman" name="Roman" id='text' required></textarea>
<p>Words:{{value | wordsCount}}</p>
注意 :请记住在声明数组中注册自定义管道。
编辑 :如果您不想使用管道,则可以使用(ngModelChange)
更新您的value
属性。
在您的component.html
<textarea [(ngModel)]="review.Roman" (ngModelChange)="valueChanges($event)"></textarea><br>
{{value.length}}
然后在您的component.ts
添加valueChanges
方法:
export class PostReviewComponent implements OnInit {
value: any = [];
reviews: Reviews[];
review: Reviews = {
Roman:''
};
ngOnInit() {
}
valueChanges(modelValue: string) {
this.value = modelValue.split(' ');
}
}
每次更新模型时,都会更新字数。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.