Javascript 将数据从父级传递到子级(嵌套表单)
我正在创建一个嵌套表单,其中包含保存表单的父组件和“提交”按钮。还有子组件,它就是表单本身 当我提交表单时,提交的属性变为true,我需要通知我的子组件,提交时提交现在为true 这是父组件中“提交”按钮的代码:Javascript 将数据从父级传递到子级(嵌套表单),javascript,angular,input,angular2-forms,Javascript,Angular,Input,Angular2 Forms,我正在创建一个嵌套表单,其中包含保存表单的父组件和“提交”按钮。还有子组件,它就是表单本身 当我提交表单时,提交的属性变为true,我需要通知我的子组件,提交时提交现在为true 这是父组件中“提交”按钮的代码: enviarDados(model: dadosAcordo, isValid: boolean, isJuridica:boolean) { this.servError = ""; this.submitted = true;
enviarDados(model: dadosAcordo, isValid: boolean, isJuridica:boolean) {
this.servError = "";
this.submitted = true;
//more code
}
<div class="wrap-acordo">
<form [formGroup]="formDadosBancarios" novalidate class="" (ngSubmit)="enviarDados(formDadosBancarios.value)">
<div formArrayName="dados_titular">
<div *ngFor="let dados_titular of formDadosBancarios.controls.dados_titular.controls; let i=index">
<div [formGroupName]="i">
<div class="col s12" *ngIf="formDadosBancarios.controls.dados_titular.length > 1">
<span class="span-removeTitular right-align" (click)="removeTitular(i)"> Remover {{i+1}}º Titular </span>
</div>
<titular (modelChanged)="recebeValidators($event)" [group]="formDadosBancarios.controls.dados_titular.controls[i]"></titular>
</div>
</div>
</div>
<div class="col s12 m6">
<input type="submit" class="botao-medio btn-aceita" value="Aceitar">
</div>
<div class="col s12 m6">
<input type="button" class="botao-medio btn-recusa" value="Recusar">
</div>
</div>
</form>
</div>
到目前为止,子组件是这样的:
export class TitularComponent implements OnChanges {
@Input('group') // this is the input for the form
@Input('submitted') // input for the status of submit
public titularForm: FormGroup;
@Output() modelChanged = new EventEmitter();
constructor(private _fb: FormBuilder, private finalizaAcordo:FinalizaNegociacaoService) {}
ngOnChanges(){
}
// more code
这是父组件上的html:
enviarDados(model: dadosAcordo, isValid: boolean, isJuridica:boolean) {
this.servError = "";
this.submitted = true;
//more code
}
<div class="wrap-acordo">
<form [formGroup]="formDadosBancarios" novalidate class="" (ngSubmit)="enviarDados(formDadosBancarios.value)">
<div formArrayName="dados_titular">
<div *ngFor="let dados_titular of formDadosBancarios.controls.dados_titular.controls; let i=index">
<div [formGroupName]="i">
<div class="col s12" *ngIf="formDadosBancarios.controls.dados_titular.length > 1">
<span class="span-removeTitular right-align" (click)="removeTitular(i)"> Remover {{i+1}}º Titular </span>
</div>
<titular (modelChanged)="recebeValidators($event)" [group]="formDadosBancarios.controls.dados_titular.controls[i]"></titular>
</div>
</div>
</div>
<div class="col s12 m6">
<input type="submit" class="botao-medio btn-aceita" value="Aceitar">
</div>
<div class="col s12 m6">
<input type="button" class="botao-medio btn-recusa" value="Recusar">
</div>
</div>
</form>
</div>
有人能帮我吗?谢谢:在父组件中,单击按钮时,将此设置为。formsubmitted=true。在子组件中,使用@input将提交的表单设置为输入。如果您需要在formsubmitted变为true后进行dp操作,请对输入formsubmitted使用ngonchanges。 Ngonchangeschange:Simplechange{ ifchanges['submitted']&更改['submitted'].currentvalue{ 在这里做你的事 } }
您可以参考使用@Input!是的,我们需要一些代码…现在它有一些代码谢谢你的回答,我用一些代码编辑了这个问题,你能帮我吗?孩子们怎么知道表单是与输入一起提交的呢?当孩子们的输入值在这里被提交时,可以使用上面代码中的ngonchanges来检测更改,谢谢RemyaJ,但是我不应该在html中做些什么吗?差不多,是的。方括号中提交的是您对子组件的输入,其值是第二次提交的值,即其在父组件中的值。对!就这样。非常感谢你的耐心,这对我帮助很大