В Angular 5 у меня есть наблюдаемый массив, и я подписываюсь на него в компоненте. И в следующей строке инструкции я проверяю, были ли данные заполнены или нет. Но я обнаружил, что переменная еще не заполнена.
https://github.com/vsaravanan/ngx-mat-select-search.git
ОШИБКА TypeError: невозможно прочитать свойство "часть" неопределенного значения. Ошибка @ this.filteredBanksMulti.next (this.banks.slice ());
У меня есть образцы данных, запущенные с jsonserver @ port 3000
"banks" : [ { "name" : "apphugIndia", "id": "A"}, { "name" : "batHugFr", "id": "B"}, { "name" : "Bank C (France)", "id": "C"}, { "name" : "hungary", "id": "D"}, { "name" : "Hungary", "id": "E"}, { "name" : "Bank F (Italy)", "id": "F"} ]
Как решить эту проблему?
это сработало для вас ??
да. решено. однажды перешел в режим подписки (...)
если ты делаешь это
this.httpCall.getData().subscribe(data=>this.recoreds = data);
this.records
тогда он не будет работать, поскольку вы вызываете сервер еще не завершено, вам нужно дождаться заполнения данных, это означает, что вы можете выполнять операции только в методе subscribe
.
чтобы избежать проблем, вам нужно ввести код в подписку
this.httpCall.getData().subscribe(data=> {
this.records = data;
//do code here which uses this.records
});
ОК. Я могу дождаться завершения выборки данных до строки «this.records». Могу я узнать, как это решить?
вы можете внутри функции "подписаться" использовать логическую переменную "покаLoaded = true". (используйте эту переменную и * ngIf, чтобы показать / скрыть сообщение «загрузка»). ПРИМЕЧАНИЕ: в вашем коде я вижу, что вы присоединяетесь к сервису и компоненту в одном файле file.ts - разделите их и создайте два файла .ts-, и я также вижу, что вы используете «старый» и «устаревший» http используйте httpClient вместо http
@singaporesaravanan - обновил мой ответ, пожалуйста, посмотрите
Я согласен на ответы. Но не уверен, насколько эффективно я могу поместить все следующие утверждения в эту функцию подписки. Дай мне попробовать. Спасибо.
Вы можете показать нам пример своего кода? Кроме того, не забудьте проверить метод подписки. Данные больше не существуют вне метода подписки