11

我的这部分代码有错误

<img src="../../../assets/gms-logo.png" alt="logo" routerLink="/overview" alt="website icon">

但是当我检查资产文件夹时,gms-logo.png它仍然存在并且在angular-cli.json,资产也在那里。路径也是正确的。

不过最近,我一直在研究搜索功能。所以我的假设是,

即使用户仍然没有关注输入类型,程序是否已经开始搜索?我该如何解决?

以下是我的搜索 html 及其建议部分的显示

<input type="text" placeholder="Search" (keyup)="onSearch($event.target.value)">        
<div class="suggestion"  *ngIf="results.length > 0">
     <div *ngFor="let result of results ">
          <a href="" target="_blank">
                {{ result.name }}
          </a>
     </div>
</div>

下面是我的组件

results: Object;



 onSearch(name) {
            this.search
            .searchEmployee(name)
            .subscribe(
                name => this.results = name,//alert(searchName),this.route.navigate(['/information/employees/']),
                error => alert(error),
                );
}
4

6 回答 6

30

您需要将results变量初始化为数组。

在您的组件中,添加:

results = [];

另一种选择是更改您的建议 div 的*ngIf语句以检查是否results已定义:

<div class="suggestion"  *ngIf="results">
   <div *ngFor="let result of results ">
          <a href="" target="_blank">
                {{ result.name }}
       </a>
   </div>
</div>
于 2017-06-22T03:13:29.723 回答
13

安全导航运算符 (?.) 和 null 属性路径

Angular 安全导航运算符 (?.) 是防止属性路径中出现空值和未定义值的一种流畅且方便的方法。就是这样,如果 currentHero 为空,则防止视图渲染失败。

因此,在您的示例中,您还可以使用安全导航运算符 (?.)

<div class="suggestion"  *ngIf="results?.length > 0">
    <div *ngFor="let result of results ">
        <a href="" target="_blank">
            {{ result.name }}
        </a>
    </div>
</div>
于 2019-01-20T17:55:54.907 回答
5

将变量初始化为空解决了我的问题。

 DoctorList: any[] = [];
于 2019-06-14T22:13:28.920 回答
4

我陷入了类似的情况,即使分配results数组 (如下所示),错误仍然存​​在。

results: Array<any>;

使用 '?' (安全导航操作员)对我来说效果很好。

*ngIf="results?.length"

安全导航运算符(?) 可用于防止 Angular在尝试访问不存在的对象的属性时抛出错误。

此示例将length仅在值results不是NullUndefined时评估。

于 2020-03-19T07:37:20.093 回答
1

我有同样的问题。我找到了两种解决方法

  1. 将结果分配为数组

    结果 = []

在 HTML 中

*ngIf="results.length"
  1. 利用 ?

    *ngIf="results?.length"

于 2020-03-18T07:51:41.190 回答
0

你可以在声明中初始化你的数组:

    result: Array<any>;

如果问题风格持续存在,您应该在您的方法中检查 null ,如下所示:

onSearch(name) {
        this.search
        .searchEmployee(name)
        .subscribe(
            name =>
if(name!=null){
this.results = 
name,//alert(searchName),this.route.navigate(['/information/employees/']),
}

            error => alert(error),
            );
}
于 2019-03-17T12:25:28.230 回答