угловой v5
Мой компонент поиска извлекает данные из службы, возвращающей обещание результата поиска. При загрузке страницы мой массив «searchResults» пуст (= новый массив ()) до тех пор, пока поиск не будет вызван на странице и обещание не будет возвращено.
* ngFor выдает ошибку, потому что вышеупомянутый «searchResults» пуст при загрузке страницы. Как мне обойти это, пока результаты поиска не будут заполнены?
Услуга:
getSearchResults(searchTerm: string, resourceType: string, pageSize: number = 9999, pageNumber: number = 1): Promise<object> {
const search = {
Term: searchTerm,
ResourceType: resourceType,
PageSize: pageSize,
PageNum: pageNumber,
ModuleId: moduleId
};
const searchHeader = {headers: this.getHttpHeaders()};
const promise = new Promise((resolve, reject): void => {
this.http.post(this.apiRoot, search, searchHeader).toPromise()
.then(response => {
resolve(JSON.parse(response['_body']));
})
.catch(error => {
reject(error);
});
});
return promise;
}
Составная часть:
submitSearch(): void {
this.siteSearchService.getSearchResults(this.searchString, this.selectedResourceType)
.then(response => {
let dto: DTO.SearchResults = <DTO.SearchResults>response;
this.totalHits = dto.TotalHits;
this.searchResults = dto.Results;
}).catch(error => {
console.log(error);
});
}
Шаблон:
<div class="row" *ngIf="searchResults" style="margin:25px;">
<div class="col-xs-12 result-row" *ngFor="let result in searchResults">
<div class="row">
<div class="col-xs-12 col-sm-10">
<a href [href]="result.Url" target="_blank" class="search-result-link">
<h3>{{result.Title}}</h3>
</a>
<p>{{result.Description}}</p>
</div>
<div class="col-xs-12 col-sm-2">
ToDo: Button
</div>
</div>
</div>
</div>
<div class="row" *ngIf="totalHits > 0 && searchResults " style="margin:25px;">
? - person Mohamed Ali RACHID   schedule 16.11.2017?
послеsearchResults
вngFor
? - person Mohamed Ali RACHID   schedule 16.11.2017*ngIf="searchResults"
и, как говорит Мохаммед, попробуйте удалить ? в конце результатов поиска - person Srinivas Valekar   schedule 16.11.2017*ngFor= "let result of searchResults"
, а не*ngFor="let result in searchResults"
- person Srinivas Valekar   schedule 16.11.2017