【问题标题】:Read data from table inputs in Angular2从 Angular2 中的表输入中读取数据
【发布时间】:2017-11-14 13:35:04
【问题描述】:

我想制作一个包含输入的表格并从中读取数据。 目前我有这个:

我想分别显示每个字母,但是现在如果我输入第一行的第一个单元格,它会写“0”:“v”,第一行的第二个单元格“0”:“i”,...并且如我的示例第一行的第五个单元格所示:“0”:“e”,但我想要的是每个单元格的 id,所以它必须是这样的:

"0": "v",
"1": "i",
"2": "e",
"3": "l",
"4": "e",
"5": " ",
"6": " ",
"7": " ",
...
"29": " ",

你能帮忙吗,我碰壁了,我不知道该怎么做......

这是我的代码:

import { Component, OnInit, ViewChildren,
  Input, Directive, TemplateRef, ViewContainerRef } from '@angular/core';

import { DataService } from '../sample02-simpleService/data.service';

@Component({
  moduleId: module.id,
  selector: 'part1',
  template: `
    <div>
    <form #f="ngForm" (ngSubmit)="onSubmit(f)">
      <table>

        <tr *ngFor="let item of itemsSource; let i = index;">

          <td *biRepeat="count">
         <input name="{{i}}" ngModel #prix="ngModel" [id]="i" />
          </td>
          {{item}}
        </tr>
      </table>
    </form>
      <pre>{{f.value | json}}</pre>
    </div>


  `,
  // styleUrls: ['app/part1/part1.component.css'],
  providers: [DataService]

})
export class Part1Component implements OnInit {
  count: number;

  @ViewChildren ('prix') inputs;
  public itemsSource: string[];
  constructor(public dataService: DataService) {
    this.count = 6;
  }
  ngOnInit() {
    this.itemsSource = this.dataService.getData();
  }

@Directive({ selector: '[biRepeat]' })
export class RepeatDirective {

  constructor( private templateRef: TemplateRef<any>,
               private viewContainer: ViewContainerRef) { }
  @Input('biRepeat') set count(c: number) {
    this.viewContainer.clear();
    for (let i = 0; i < c; i ++) {
      this.viewContainer.createEmbeddedView(this.templateRef);
    }
  }
}

【问题讨论】:

    标签: angular input html-table angular2-forms ngfor


    【解决方案1】:

    首先,您需要创建一个 obj 键数组。然后访问该数组以获取/设置对象键的值。下面的代码在我的本地环境中使用静态数据运行良好:

    import { Component } from '@angular/core';  
    import { FormsModule } from '@angular/forms';
    
    
    @Component({
      selector: 'my-app',
      template: `
        <ul>
            <li *ngFor="let o of obj_keys">
                <input name="o" id="o" [(ngModel)]="obj[o]" />
            </li>
        </ul>
    
    
    
        {{obj | json}}
    
      `,
      styles: [`
        ul,li{margin:0;padding:0;list-style:none;}
      `]
    })
    
    export class AppComponent  { 
        obj_keys: any; // declare empty var
    
        obj = {
            "0": "v",
            "1": "i",
            "2": "e",
            "3": "l",
            "4": "e",
            "5": "1",
            "6": "2",
            "7": "4"
        }
    
        constructor() {
            this.obj_keys = Object.keys(this.obj); // create object keys array
        }
    }
    

    【讨论】:

    • 谢谢,但我需要显示像 obj = {" "0": "v", "1": "i"} 这样的数据,我从数组中获取数据,它是在 Dataservice 中定义的(在提供者中),有 5 个单词。我希望能够使每个输入唯一并从每个输入数据中读取。此刻我从每一行读取数据,而不是单元格......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多