【发布时间】:2021-06-09 03:46:52
【问题描述】:
我是 Angular 的新手,正在尝试通过检查代码示例来学习。我为 ngx-Typeahead 提取了一些示例代码,并试图理解这些代码。
interface SearchResponse {
total_count: number;
incomplete_results: boolean;
items: Owner[];
}
然后
this.suggestions$ = new Observable((observer: Observer<string>) => {
observer.next(this.search);
}).pipe(
switchMap((query: string) => {
if (query) {
return this.http.get<SearchResponse>('https://localhost:5001/api/GetOwners', {
params: { q: query }
}).pipe(
map((data: SearchResponse) => data && data.items || []),
tap(() => noop, err => { this.errorMessage = err && err.message || 'Something goes wrong'; })
);
}
return of([]);
})
);
代码行:
map((data: SearchResponse) => data && data.items || [])
读取类似“将响应映射到此函数并将其称为“数据”。然后将其与项目(SearchResponse 的一个元素)进行 AND。如果 AND 为空,则返回一个空数组。”那么如果不是什么都没有呢? "data && data.items 产生什么?或者我想太多了,data && data.items 将返回 true,因此返回整个数据项?
【问题讨论】:
-
如果数据不为空,
data && data.items将返回data.items。使用data && data.items || []时,如果data为空或data.items 为空/不存在,则返回一个空数组。
标签: angular typescript angular11