首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误错误:找不到路径为'stocks -> stockName‘的控件

错误错误:找不到路径为'stocks -> stockName‘的控件
EN

Stack Overflow用户
提问于 2020-06-10 17:28:11
回答 1查看 31关注 0票数 0

您好,我有一个错误,试图创建动态表单与反应式表单模块

下面是我的html代码

代码语言:javascript
复制
<div class="container-fluid">
  <h2>Stock Rebalancer</h2>
  <div class="form-group">
    <input class="form-control" placeholder="Total Capital" [(ngModel)]="buyingPower">
  </div>
  <div class="form-group">
    <input class="form-control" placeholder="Buying power" [(ngModel)]="buyingPower">
  </div>
  <form [formGroup]="stockForm">
    <div formArrayName="stocks">
      <div class="form-group" *ngFor="let stock of stockForm.get('stocks')['controls']; let i = index">
        <div class="form-row">
          <div class="col">
            <input formControlName="stockName" class="form-control" placeholder="stock name">
          </div>
          <div class="col">
            <input formControlName="currentTotal" class="form-control" placeholder="$current total">
          </div>
          <div class="col">
            <input formControlName="stockPercentage" class="form-control" placeholder="percantage%">
          </div>
          <div class="col">
            <input formControlName="stockPrice" class="form-control" placeholder="$stock price">
          </div>
          <button class="btn btn-light" type="button" title="remove Stock" (click)="onRemoveStock(i)">X</button>
        </div>
      </div>
    </div>
  </form>
  <button class="btn btn-primary" type="button" title="Add Stock" (click)="addStock()">Add Stock</button>
  <!-- <button class="btn btn-primary" type="button" title="Add Stock" (click)="onRebalance()">Rebalance</button> -->
</div>

它有四个控件: stockName、stockPrice、currentTotal和stockPercentage。使用其中的四个控件可以在表单数组中构建一个项。

以下是组件的代码

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray, FormControl } from '@angular/forms';
import { Plan } from 'src/app/interface/plan';

@Component({
  selector: 'app-stock-component-calculator',
  templateUrl: './stock-component-calculator.component.html',
  styleUrls: ['./stock-component-calculator.component.css']
})

export class StockComponentCalculatorComponent implements OnInit {

  constructor(private formBuilder: FormBuilder) { }

  stockForm: FormGroup;
  buyingPower: number;
  plans: Plan[]

  ngOnInit(): void {
    this.stockForm = this.formBuilder.group({
      stocks: this.formBuilder.array([])
    });
    const stockControl = this.stockForm.get('stocks')['controls'];

    for (var i = 0; i < 6; i++) {
      stockControl.push(this.formBuilder.group({
        stockName: new FormControl(''),
        currentTotal: new FormControl(0),
        stockPercentage: new FormControl(0),
        stockPrice: new FormControl(0),
      }));
    }
  }

  createStock(): FormGroup {
    return this.formBuilder.group({
      stockName: new FormControl(''),
      currentTotal: new FormControl(0),
      stockPercentage: new FormControl(0),
      stockPrice: new FormControl(0),
    });
  }

  addStock() {
    const stockControl = this.stockForm.get('stocks')['controls'];
    stockControl.push(this.createStock());
  }

  onRemoveStock(index) {
    const stockControl = this.stockForm.get('stocks')['controls'];
    stockControl.removeAt(index);
  }
}

我得到的错误如下:

代码语言:javascript
复制
ERROR Error: Cannot find control with path: 'stocks -> stockName'
ERROR Error: Cannot find control with path: 'stocks -> currentTotal'

我想知道我在这里犯的错误是什么。谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 07:54:45

我修复了我的问题,更改

代码语言:javascript
复制
*ngFor="let stock of stockForm.get('stocks')['controls']; let i = index"

代码语言:javascript
复制
*ngFor="let stock of stocks; let i = index"

还添加了一个新的div

代码语言:javascript
复制
<div [formGroup]="stock">

对于ts部分,我声明

代码语言:javascript
复制
stocks: FormGroup[]
this.stocks = <FormGroup[]>(this.stockForm.controls.stocks as FormArray).controls;

因为它是一个嵌套结构FormGroup -> FormArray -> FormGroup,所以我需要一些时间来弄清楚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62300193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档