javascript - Angular 2 - 如何在 init 上预填充 3 个表单组

标签 javascript angular typescript

我有以下代码,允许用户添加一组新字段。但我希望组件在 init 时渲染出 3 组数据。

目前,一组字段是通过 initRateRow 函数创建的,但如何让它循环通过 httpservice 将其插入“this._fb.group”?

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormArray, FormBuilder, Validators } from '@angular/forms';

@Component({
  selector: 'app-exchange-rates',
  templateUrl: './exchange-rates.component.html',
  styleUrls: ['./exchange-rates.component.scss']
})
export class ExchangeRatesComponent implements OnInit {

    public myForm: FormGroup;

    constructor(private _fb: FormBuilder) { }

    ngOnInit() {
        this.myForm = this._fb.group({
            rates: this._fb.array([
                this.initRateRow(),
            ])
        });
    }

    initRateRow() {
        return this._fb.group({
            rateUnit: ['24', Validators.required],
            currencyFrom: ['GBP', Validators.required],
            currencyTo: ['USD', Validators.required]
        });
    }

    blankRateRow() {
        return this._fb.group({
            rateUnit: ['', Validators.required],
            currencyFrom: ['', Validators.required],
            currencyTo: ['', Validators.required]
        });
    }

    addRateRow() {
        const control = <FormArray>this.myForm.controls['rates'];
        control.push(this.blankRateRow());
    }

    removeRateRow(i: number) {
        const control = <FormArray>this.myForm.controls['rates'];
        control.removeAt(i);
    }

    save(model) {
        // call API to save
        // ...
        console.log(model);
    }

}

最佳答案

您可以在ngOnInit()中完成。

ngOnInit(){
    let url = '/getData'; // API url
    this.http.get(url)
        // Assuming data arrive as json
        .map(r => r.json())
        // Assuming data arrive as array of row
        .subscribe(rowArray => rowArray.forEach(row => {

            // Use `row` to init 1 row

        }));
}

关于javascript - Angular 2 - 如何在 init 上预填充 3 个表单组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42913170/

相关文章:

angular - 在 RxJs 和 Angular 中测试可观察到的 'next' 回调

javascript - 在 React 中调用组件时访问 props 时遇到问题

javascript - 为什么 javascript document.write 在 Firefox 上不起作用?

javascript - 元素什么时候真正添加到 DOM 树中?

javascript - Jquery 事件不适用于动态添加的 Div

javascript - Angular 2 D3 事件、变更检测和上下文

javascript - Jquery:代码未在 Rails 中的页面加载时执行

angular - 在 zone.js 中随机获取超过最大调用堆栈大小

javascript - import * vs import { specificName } 在 Typescript/ES6 中?

javascript - 将 CSS 变量导入 Typescript 文件