首页 > 解决方案 > Angular:让用户用表单创建对象

问题描述

我对 Angular 还是很陌生,我遇到了一个问题,我希望用户能够使用 String-Data 填写表单,然后应该创建一个要在列表中显示的对象。我不知道该怎么做,我发现的所有显示列表的教程和示例都使用 MockData 作为示例,所以我不知道如何将用户输入连接到列表显示。

这是列表中各个元素的代码 (.ts):

import { Component, OnInit } from '@angular/core';
import { Project } from '../project';

@Component({
 selector: 'app-project',
 templateUrl: './project.component.html',
 styleUrls: ['./project.component.css']
})
export class ProjectComponent implements OnInit {
 openform = false;

 newProjectForm = this.formBuilder.group({
  name: '',
  pjNummer: '',
})

constructor(private formBuilder: FormBuilder) { }

ngOnInit() {
}

onSubmit() {
 this.openform = false;
 this.newProjectForm.reset();
 return this.openform;
}

onClickOpenForm() {
 this.openform=true;
 return this.openform;
}
}

和.html:

<div>
 <button (click)="onClickOpenForm()" 
 value="Register">Neues Projekt eintragen</button>
</div>
<div *ngIf="openform">
    <form [formGroup]="newProjectForm" (ngSubmit)="onSubmit()">
        <div>
            <label for="name">
            Projektname:
            </label>
            <input id="name" type="text" formControlName="name">
        </div>

        <div>
            <label for="pjNummer">
            PJ-Nummer:
            </label>
            <input id="pjNummer" type="text" formControlName="pjNummer">
        </div>
  
        <button (click)="onSubmit()"
        class="button" type="submit">Erstellen</button>
        
    </form>
</div>

以及列表本身的代码(.ts):

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

@Component({
  selector: 'app-project-list',
  templateUrl: './project-list.component.html',
  styleUrls: ['./project-list.component.css']
})
export class ProjectListComponent{

  projects: any[];
  
  constructor() {}
}

和.html:

<h2> Erstellte Projekte </h2>
<ul class="projects">
    <li *ngFor="let project of projects">
        <h3>{{project.name}}</h3>
        <div><span>Name: </span>{{project.name}}</div>
        <div><span>Pj-Nummer: </span>{{project.pjNummer}}</div>
    </li>
</ul>

所以基本上,我正在寻找一种将用户放入表单的数据的项目添加到“项目:任何 []”列表中的方法,只要提交表单,但我不知道怎么做.

标签: javascripthtmlangular

解决方案


可以对表单组使用 value 方法 this.newProjectForm.value(); 在此之前.newProjectForm.reset(); 它将返回用户输入的所有数据


推荐阅读