Вам не нужно (ngModelChange) = "countFilter (filterdata)", потому что, как я вижу, у вас есть 2 метода, которые вызывают конечную точку REST для фильтрации данных: один в countFilter (filterdata), а другой - в searchByText (filterdata),Когда вы вызываете searchByText (filterdata), я предполагаю, что вы пытаетесь отфильтровать данные на сервере и получить результаты.Когда вы получаете этот результат от сервера, вы помещаете длину этого результата в переменную, как вы делали это в методе countFilter.
this.arrayCount = this.result.length;
, просто поместите его в метод searchByText и удалите countFilter, потому что он вам не нужен.
РЕДАКТИРОВАТЬ:
<input class="form-control" id="input1-group1" style="margin-
top:20px" type="text" name="search" placeholder="Enter Search Text"
#searchControl (keyup.enter)="searchByText(searchControl.value)"
(input)="countFilter($event.target.value)"
>
в вашем файле .ts у вас будет метод searchByText (значение), который вызывает конечную точку API и таблицу данных запроса, что-то вроде этого:
searchByText(value) {
this.http.post("http://" + url + ":" + port +
"/transaction/masterSearchTransactionForm/", this.filterObj
, { headers: new Headers({ 'Authorization': 'Bearer ' +
localStorage.getItem('Token') }) })
.map(result => this.result = result.json())
.subscribe((res: Response) => {
this.records = res;
}
Теперь вы сохранили все данные, которые вы запрашивали в первый раз, нажав ENTER. После этого вы хотите иметь метод, который может фильтровать эти сохраненные данные:
countFilter(value) {
this.records = this.records.filter((record) => record.name == value);
}
теперь у вас есть та же самая переменная (this.записи) с отфильтрованными данными!А в HTML вы можете просто выполнить интерполяцию строки {{this.records.length}}