javascript - Angular - 无法迭代数组

标签 javascript arrays angular

我正在尝试迭代数组,但无法这样做(它是数组下的数组)。 它给出了一个错误:

TypeError: Cannot read property 'toUpperCase' of undefined ("

我没有在任何地方使用 toUpperCase。

typescript 代码是:

ngOnInit() {
      this.data = [
          {
              'name': 'Task 1',
              'to_do': ['ToDo1', 'ToDo2', 'ToDo3']
          },
          {
              'name': 'Task 2',
              'to_do': ['ToDo4', 'ToDo5', 'ToDo6']
          }
      ];

  }

模板代码为:

<div class="col-md-12">
        Create New Task: <input type="text" name="task" />

        <ul>
          <li *ngFor="let task of data; let i=index; let todo=task.to_do;">
            <div>
              {{ task.name }}
              {{ todo }}
            </div>
            <div *ngFor="let do of todo">
              <input type="text" name="to_do" value="{{ do }}" />
            </div>
          </li>
        </ul>
      </div>

最佳答案

实际上是let todo=task.to_do;导致的模板解析错误

您只能为 ngFor 的导出值(索引、奇数、偶数等)声明局部变量

https://angular.io/api/common/NgForOf#local-variables

试试这个

    <ul>
      <li *ngFor="let task of data; let i=index; ">
        <div>
          {{ task.name }}
          {{ task.to_do}}
        </div>
        <div *ngFor="let do of task.to_do">
          <input type="text" name="to_do" value="{{ do }}" />
        </div>
      </li>
    </ul>

注意:ngFor导出一个$implicit值,它等于循环中的当前项。但是,以下内容不起作用(我认为它只能评估简单的作业

 <li *ngFor="let task of data; let i=index; let todo=$implicit.to_do;">

但是,它可以使用 ngForng-template 形式和 let-variable 语法(但更详细)

        <ng-template ngFor let-todo=$implicit.to_do let-task [ngForOf]="data" let-i="index" >
  <li>
  <div>
              {{ task.name }}
              {{ todo }}
            </div>
            <div *ngFor="let do of todo">
              <input type="text" name="to_do" value="{{ do }}" />
            </div>
            </li>
  </ng-template>

这是一个展示两种方式的 stackblitz

https://stackblitz.com/edit/angular-cces4g?file=app%2Fapp.component.html

关于javascript - Angular - 无法迭代数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49595595/

相关文章:

javascript - 正则表达式匹配可以与肤色修饰符有效结合的表情符号?

javascript - 了解 Javascript 构造函数 : custom create method

javascript - 查找二维数组中的索引

css - Angular 应用程序中 (S)CSS 规则的顺序

node.js - Angular 5 HttpClient 响应 header 不包含自定义 header

javascript - 基于背景颜色对所有元素使用 jQuery 过滤器

javascript - Gulp "watch"为外部 API 提供代理

python - 将元素插入到 numpy 数组的开头和结尾

arrays - 使用 Swift 查找数组中的重复元素

angular - “.builders[' 浏览器 ']” 应该具有所需的属性 'class'