Javascript 将数据从子组件发送到父组件

Javascript 将数据从子组件发送到父组件,javascript,angular,output,angular2-forms,Javascript,Angular,Output,Angular2 Forms,我的子组件上有一个按钮,该按钮应将信息发送给其父组件,但此按钮不发送此信息。我可能错过了什么,但我还是没有注意到 以下是my child组件中按钮的代码(有两个按钮:selectPessoaJuridica和selectPessoaFisica: import { Component, Input, Output, EventEmitter} from '@angular/core'; import { FormBuilder, FormGroup, Validators, FormArray,

我的子组件上有一个按钮,该按钮应将信息发送给其父组件,但此按钮不发送此信息。我可能错过了什么,但我还是没有注意到

以下是my child组件中按钮的代码(有两个按钮:
selectPessoaJuridica
selectPessoaFisica

import { Component, Input, Output, EventEmitter} from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormArray, FormsModule, ReactiveFormsModule} from '@angular/forms';
import {FinalizaDisputaService} from '../services/finaliza-disputa.service';
import {FinalizaDisputaComponent} from './finaliza-disputa.component'

@Component({
    moduleId: module.id,
    selector: 'titular',
    templateUrl: 'dados-titular.component.html'
})
export class TitularComponent {
    // we will pass in address from App component
  @Input('group')
  public titularForm: FormGroup;
  @Input() submitted:any;
  @Input() indexNumber:any;
  @Output() modelChanged = new EventEmitter<boolean>();
  public isJuridica = false;
  classe = {
    pessoa_fisica: 'selected',
    pessoa_juridica: ''
  };
  
  constructor(private _fb: FormBuilder, private finalizaAcordo:FinalizaDisputaService) {} 
   
  selectPessoaFisica(e:boolean){
    e = false;
    this.classe.pessoa_fisica = "selected";
    this.isJuridica = false;
    this.classe.pessoa_juridica = "";
    this.modelChanged.emit(e)
  }

  selectPessoaJuridica(e:boolean){
    e = true;
    this.classe.pessoa_fisica = "";
    this.classe.pessoa_juridica = "selected";
    this.isJuridica = true;
    console.log("ativou", e)
    this.modelChanged.emit(e);
  }
}
这是来自父组件的代码,在这里我应该从
e
receibevalidators
)接收值:

从'@angular/core'导入{Component,OnChanges,OnInit,Input};
从'@angular/Http'导入{Http};
从“@angular/forms”导入{FormBuilder、FormGroup、Validators、FormArray、FormsModule、ReactiveFormsModule、AbstractControl、ValidatorFn};
从“../services/finalizadisputa.service”导入{FinalizaDisputaService};
从“../../disputas/services/disputas.service”导入{DisputaService};
从“../model/dados acordo.interface”导入{dadosAcordo};
从“./dados titular.component”导入{TitularComponent};
从'@angular/Router'导入{Routes,RouterModule,Router,ActivatedRoute};
@组成部分({
moduleId:module.id,
选择器:'detalhes',
templateUrl:`finalizadisputa.component.html`,
提供程序:[最终确定应用程序服务]
})
导出类FinalizadIsputComponent实现OnInit{
公共护墙板:护墙板;
争论:任何;
公共表格Dadosbancarios:FormGroup;
公共提交:布尔;
公共事件:任何[]=[];
公共服务器:任何;
公共指标=0;
公共加载=错误;
胞体=0;
公共服务成功:任何;
@输入()e:布尔值;
cpf_REGEXP=/^\d+$/;
构造函数(private-fb:FormBuilder,private-service:DisputaService,private-finalizaaacordo:FinalizaDisputaService,
专用路由:ActivatedRoute,专用路由器:router){}
恩戈尼尼特(){
this.route.params.subscribe(params=>{
设id=params['id'];
这是服务
.buscaPorId(id)
.订阅(争议=>{
this.disputa=disputa;
console.log(disputa.campanha);
console.log(this.disputa.propostas_realizadas);
},
erro=>console.log(erro));
})
this.formDadosBancarios=this.\u fb.group({
id:[''],
termos_condicoes:[假,验证器。requiredTrue],
护墙板:这个([
这是我的名字()
])
})
}
/**
*最初——在法律和法律方面
*@返回“
*/
初始(){
将此返回。\u fb.group({

标题:['',[

你应该键入它

@Output() modelChanged = new EventEmitter<boolean>();

你应该把它打出来

@Output() modelChanged = new EventEmitter<boolean>();

在“recebeValidators”函数中,您似乎正在使用函数参数“e”隐藏一个类属性

守则:

console.log("test", this.e);
实际上应该是:

console.log("test", e);
要排除EventEmitter中可能出现强制转换错误的可能性,请尝试不重用parameter函数。示例:

selectPessoaFisica(e:any) {
    e = false;
    this.modelChanged.emit(e)
}
可以改写为:

selectPessoaFisica() {
    this.modelChanged.emit(false);
}
接收函数中还有一个额外的参数:

这:

应该是:

recebeValidators(e: boolean) {

在“recebeValidators”函数中,您似乎正在使用函数参数“e”隐藏一个类属性

守则:

console.log("test", this.e);
实际上应该是:

console.log("test", e);
要排除EventEmitter中可能出现强制转换错误的可能性,请尝试不重用parameter函数。示例:

selectPessoaFisica(e:any) {
    e = false;
    this.modelChanged.emit(e)
}
可以改写为:

selectPessoaFisica() {
    this.modelChanged.emit(false);
}
接收函数中还有一个额外的参数:

这:

应该是:

recebeValidators(e: boolean) {


哦,是的,我在做一些测试,但忘了删除
这个
。不管怎么说,我按照你说的那样进行了转换,但我仍然没有定义:(你在
emit
console
上从哪里获得未定义的屏幕快照更新帖子我如何才能更新你在帖子中没有提到的子组件。更新它我会为你解决的抱歉,我没有得到你,你想让我从子组件中放入html?给你发了一条消息哦,是的,我正在做一些测试,但忘记了要删除
。无论如何,我按照您所说的方式进行了转换,但仍然没有定义:(你在
emit
console
上从哪里获得未定义的屏幕快照更新帖子我如何才能更新你在帖子中没有提到的子组件。更新它我会为你解决的抱歉,我没有找到你,你想让我从子组件中放入html?向你发送了一条消息确保你检查了你使用的变量在控制台上打印。一切可能都很正常,但您可能使用了“this.e”(类属性)而不是“e”(函数参数)。是的,我做了一些测试,忘了删除
this
,但甚至删除了它仍在打印
未定义的
:(.无论如何,谢谢它应该可以工作。我刚刚在我的机器上测试了它,它工作了。也许如果你粘贴你当前的源代码,我们可以发现你犯的错误。这可能是一些小的打字错误或铸造问题。好的,我会编辑问题并粘贴子组件的全部代码。我已经更新了问题,看看你是否可以帮我制作请确保检查您正在控制台上打印的变量。一切可能都正常工作,但您可能使用了“this.e”(类属性)而不是“e”(函数参数)。是的,我做了一些测试,忘了删除
this
,但甚至删除了它仍在打印
未定义的
:(.无论如何,谢谢它应该可以工作。我刚刚在我的机器上测试了它,它工作了。也许如果你粘贴你当前的源代码,我们可以发现你犯的错误。这可能是一些小的打字错误或铸造问题。好的,我会编辑问题并粘贴子组件的整个代码。我已经更新了问题,看看你是否可以帮忙