【问题标题】:Angular 2 accessing 2. Level Nested FormArrays using FormBuilderAngular 2 访问 2. 使用 FormBuilder 级别嵌套的 FormArrays
【发布时间】:2017-08-14 06:01:32
【问题描述】:

使用 angular 2 formbuilder 我正在尝试将数据插入到第二个数组中? “模型阵列”;这是我的 ts 和 html 文件的一部分

    createModelArray(): void {
    this.dataFRM = this.fb.group({
      docNo: [null, Validators.compose([Validators.required, Validators.minLength(2), Validators.maxLength(30)])],
      companyId: [null, Validators.compose([Validators.required])],
      purchaseTypeId: [null, Validators.compose([Validators.required])],
      transactionsDate: [null, Validators.compose([Validators.required])],
      wareHouseId: [null, Validators.compose([Validators.required])],
      storeId: null,
      note: null,
      taxTotal: null,
      discountTotal: null,
      grandTotal: null,
      transportationAmount: null,
      orderNo: null,
      orderedBy: null,
      invoiceDispatchDate: null,
      maturityDate: null,
      deliveryAddress: null,
      status: true,
      userId: CONFIG.userInfo.userId,
      lastModifiedBy: null,
      modelDetail: this.fb.array([
        this.initModelDetail()
      ])
    });
  }

  initModelDetail(): any {
    return this.fb.group({
      modelName: ['', [Validators.required, Validators.minLength(3)]],
      price: ['', [Validators.required]],
      exchange: [''],
      sizeGroup: null,
      modelArray: this.fb.array([
        this.initmodelArray()
      ])
    });
  }

  initmodelArray(): any {
    return this.fb.group({
      colorId: ['', Validators.required],
      sizeId: [],
      price: [],
      qty: [1, Validators.required]
    })
  };
<div class="row">

        <form [formGroup]="dataFRM" class="form-horizontal" autocomplete="off" novalidate>
                <div class="container">
                    <div class="col-xs-12">
                        <div class="margin-20">
                            <h4>SatinAlma Detay</h4>
                        </div>
                        <div class="margin-20">
                            <a class="btn btn-default" (click)="addModelInfo()" style="cursor: default"> {{"SYSTEM_CRUD.NEW"|translate}}</a>
                        </div>
                        <div formArrayName="modelDetail">
                            <div class="panel panel-default" [formGroupName]="i" *ngFor="let project of dataFRM.controls.modelDetail.controls; let i = index">
                                <div class="panel-heading">
                                    <span>Model {{i + 1}}</span>
                                    <span class="glyphicon glyphicon-remove pull-right" (click)="removeModel(i)"></span>
                                 </div>
                                <div class="panel-body">
                                    <div class="row">
                                        <div class="form-group col-xs-3">
                                            <label>Model Adı</label>
                                            <input type="text" class="form-control" formControlName="modelName" placeholder="model adı..">
                                        </div>
                                        <div class="form-group col-xs-3">
                                            <label>Fiyati</label>
                                            <input type="number" class="form-control" formControlName="price" placeholder="fiyat..">
                                        </div>
                                        <div class="form-group col-xs-3">
                                            <label>Doviz</label>
                                            <ng-select formControlName="exchange" [options]="exchangeList" [multiple]="false" [allowClear]="true" placeholder="doviz seçiniz.."></ng-select>
                                        </div>
                                        <div class="form-group col-xs-3">
                                            <label>Beden Seti</label>
                                            <ng-select formControlName="sizeGroup" [options]="sizeGroupList" [multiple]="false" [allowClear]="true" (selected)="getSizeList($event.value)"
                                                placeholder="benden seti seçiniz.."> </ng-select>
                                        </div>
                                    </div>

                                    <br/>
                                    <div class="row">
                                        <div class="col-xs-12">
                                            <div formArrayName="modelArray">
                                                <div class="table table-bordered table-hover table-resonsive table-striped">
                                                    <thead>
                                                        <tr>
                                                            <th>Rengı</th>
                                                            <th>Fiyati</th> 
                                                            <th>İşlem</th>
                                                            <th><button class="btn btn-primary" (click)="addColor(project.controls.modelArray.controls)"> Yeni</button></th>
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <div [formGroupName]="x" *ngFor="let detail of project.controls.modelArray.controls; let x = index">
                                                            <tr>
                                                                <td>
                                                                    <ng-select formControlName="colorId" [options]="colorsList" [multiple]="false" [allowClear]="true" placeholder="ürün seçiniz.."></ng-select>
                                                                </td>
                                                                <td>
                                                                    <input type="number" class="form-control" formControlName="price" placeholder="fiyati..">
                                                                </td>
                                                               
                                                                <td class="text-right">
                                                                    <div class="btn-group">
                                                                        <a class="btn btn-danger btn-xs btn-rounded" (click)="removeColor(X)"><i class="fa fa-trash"></i> Sil</a>
                                                                    </div>
                                                                </td>
                                                            </tr>
                                                        </div>
                                                    </tbody>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div> 

                        <div class="margin-20">
                            <a class="btn btn-default" (click)="addModelInfo()" style="cursor: default"> {{"SYSTEM_CRUD.NEW"|translate}}</a>
                        </div> 
                        <div class="clearfix"></div> 
                    </div>
                </div>
                </form>
            </div>
enter link description here 查看上述解决方案;我只是想访问数组内的数组。

提前致谢。

【问题讨论】:

  • 一大堆与问题完全无关的代码:-/

标签: arrays angular nested formbuilder


【解决方案1】:

使用group.get(...),这应该会为您提供数组:

this.dataFRM.get('modelDetail.0.modelArray')

【讨论】:

  • 我的问题是允许用户在单击按钮时输入或推送数据到“modelArray”数组。我有 2 个按钮 1.) 使用“modelArray”创建主组“modelDetail” 2.) 另一个按钮可以根据需要重复输入或推送数据到 modelArray。不是:第一个按钮没问题,但按钮 2 将数据推送到屏幕上而不反映模型。请帮助需要。提前致谢。
  • 你的意思是addModelInfo(),那么请将这个方法的内容添加到你的问题中。
猜你喜欢
  • 2018-01-12
  • 2017-08-19
  • 2017-02-22
  • 2017-12-21
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2017-05-06
  • 2016-06-23
相关资源
最近更新 更多