Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

226
Visualizações
¿Debo usar dos componentes para editar y crear formularios en angular?

Hice un formulario de creación que publica datos en la base de datos. Ahora necesito hacer un formulario de actualización. ¿Necesito crear un componente separado para el formulario de actualización? ¿O debería usar el mismo componente para actualizar y crear formulario?

aquí está mi código de plantilla,

 template: ` <form novalidate (ngSubmit)="this.createExperience()" [formGroup]="this.formGroup"> <div formArrayName="dayanddescriptions"> <div class="panel panel-default" *ngFor="let dayAndDescription of this.formGroup.controls.dayanddescriptions.controls; let i = index" > <div class="panel-heading"> <span>Day {{i + 1}}</span> <span class="glyphicon glyphicon-remove pull-right" *ngIf="i>0" (click)="removeDayandDescription(i)"> </span> </div> <div class="panel-body" [formGroupName]="i"> <!--Day--> <div class="form-group col-xs-4" > <label for="text">Day</label> <input type="text" class="form-control" formControlName="day" [ngModel]="i + 1" readonly> </div> <!--Description--> <div class="form-group col-xs-4"> <label>Description</label> <input type="text" class="form-control" formControlName="description"> </div> </div> </div> </div> </form> <div class="margin-20"> <a (click)="addDayandDescription()" style="cursor: default"> Add another day + </a> </div> <pre> form: {{ this.formGroup.value | json }} </pre> `, here is the component, ngOnInit() { this.createForm(); } public buildForm(buildFormObject) { this.formGroup = buildFormObject; } initDayandDescription() { return this._formBuilder.group({ day: ['', Validators.required], description: [''], }); } addDayandDescription() { const control: FormArray = this.formGroup.get('dayanddescriptions') as FormArray; control.push(this.initDayandDescription()); } createForm() { this.buildForm(this._formBuilder.group({ dayanddescriptions: this._formBuilder.array([ this.initDayandDescription(), ]), hashtags: '', })); }
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

puede crear un componente de formulario común, que acepte que @Input es un FormGroup, luego cree el formulario Editar y Crear, configure el formulario (el formulario de edición tendrá valores), pasando su formulario al componente de formulario común:

Común

 @Component({ selector: 'tpc-cm-form', template: ` <div [formGroup]="formGroup"> <input formControlName="example" type="text"> <br> <textarea formControlName="sectionContent"></textarea> </div> ` }) export class CMForm { @Input() formGroup: FormGroup; }

Crear

 @Component({ selector: 'tpc-cr-form', template: ` <form [formGroup]="form"> <tpc-cm-form [formGroup]="form"></tpc-cm-form> </form> ` }) export class CreateForm { form: FormGroup; constructor(private fb: FormBuilder) { } ngOnInit() { this.form = this.fb.group({ example: '', sectionContent: '' }); } }

Editar

 @Component({ selector: 'tpc-ed-form', template: ` <form [formGroup]="form"> <tpc-cm-form [formGroup]="form"></tpc-cm-form> </form> ` }) export class EditForm { form: FormGroup; constructor(private fb: FormBuilder) { } ngOnInit() { this.form = this.fb.group({ example: '', sectionContent: '' }); // fetch data from API for example this.form.patchValue({ example: 'Simple data', sectionContent: 'Content textarea' }); } }

demostración en línea: https://plnkr.co/edit/NWgzGdUc9cDkKujPgrl4?p=preview

about 4 years ago · Santiago Trujillo Relatório

0

puede crear un componente de formulario común para ambos. Si la ruta del enrutador del formulario es, digamos
/createform (sin parámetro) luego abra el formulario para el modo de creación. También para el caso de edición, abriremos ese componente con un parámetro de enrutador ( por ejemplo, /createform/edit ) y con la ayuda del parámetro de enrutador puede actualizar el formulario en modo de edición.

para obtener el parámetro del enrutador

 this.route.paramMap.subscribe(params => { console.log(params.get('paramName')); });

he creado un stackblitz para ti

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda