【问题标题】:Separate Forms into Components in Angular在 Angular 中将表单拆分为组件
【发布时间】:2021-11-07 14:20:45
【问题描述】:

我已经成功地建立了一个页面,它有两种形式。我很难将这两种形式分成单独的组件。我已经为每个表单添加了组件。我将如何以推荐和正确的方式做到这一点?

请在这里查看我的 stackblitz CLICK HERE

this.personalDetails = this.formBuilder.group({
  name: ["", Validators.required],
  email: ["", Validators.required],
  phone: ["", Validators.required],
});
this.addressDetails = this.formBuilder.group({
  city: ["", Validators.required],
  address: ["", Validators.required],
  pincode: ["", Validators.required],
});

【问题讨论】:

  • 放置输入道具以接收组件内的表单组,并在应用程序组件内使用组件选择器。

标签: angular angular-reactive-forms angular-forms


【解决方案1】:

要将一个大的 .html 分成两个组件,您可以分三步完成

  1. 使用与主文件相同的 .html。
  2. 你使用的必要变量@Input,所以。例如对于您需要的“个人信息”
      @Input() personalDetails:FormGroup
      @Input() personal_step = false;
  1. 函数是 eventEmitters,所以你需要个人信息
    @Output() next:EventEmitter<any>=new EventEmitter<any>()
  1. 稍微改变一下 .html - 真的去掉 "*ngIf="step==1" 和 更改 (click)="next()" 以使用输出
    <input (click)="next.emit(null)" .../>
  1. 有些功能需要翻译成组件
  2. 您还需要复制 .css。我选择将 .css 放入 styles.css (所有应用都通用

我 fork 你的 stackblitz here

【讨论】:

    【解决方案2】:

    你快到了,你可以这样做:

    个人信息.component.ts

    import { Component, Input, OnInit } from '@angular/core';
    
    export interface PersonalInfo {
      name: string
      email: string
      phone: string
    }
    
    @Component({
      selector: 'app-personal-info',
      templateUrl: './personal-info.component.html',
      styleUrls: ['./personal-info.component.css']
    })
    export class PersonalInfoComponent implements OnInit {
    
      @Input() personal: PersonalInfo; // <---- input data for your component
    
      constructor() { }
    
      ngOnInit() {
      }
    
    }
    

    然后在个人组件html中:

    <form>
      <input type="text" [(ngModel)]="personal.name" />
    </form>
    

    在您的应用组件中,类似:

    <personal-info [personal]="currentUser.personalInfo" />
    

    【讨论】:

    • 你能分叉我的堆栈闪电战吗?
    • 在您的情况下,您的组件输入可以是 formGroup 本身。
    • 不,对不起,我不会为你做这项工作
    • 你可以试试这个stackblitz.com/edit/…@SimonCorcos
    猜你喜欢
    • 2019-05-04
    • 2017-07-11
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2021-04-19
    • 2021-07-24
    • 1970-01-01
    相关资源
    最近更新 更多