Angular2:获取在EventEmitter中传递的单个参数

Angular2:获取在EventEmitter中传递的单个参数,angular,eventemitter,angular2-forms,Angular,Eventemitter,Angular2 Forms,我有两个组件,一个“创建”组件和子“表单”组件。我需要表单组件将提交事件与表单数据一起传递 真正的问题是,当我记录收到的事件时,我得到的是2,而不是一个事件/参数。这是它记录的内容:事件{isTrusted:true}然后联系{name:inputName} 如何过滤事件,以便仅在收到联系人对象时才执行操作 父“创建”组件: import {Component, OnInit } from 'angular2/core'; import {Contact} from './contact'; i

我有两个组件,一个“创建”组件和子“表单”组件。我需要表单组件将提交事件与表单数据一起传递

真正的问题是,当我记录收到的事件时,我得到的是2,而不是一个事件/参数。这是它记录的内容:
事件{isTrusted:true}
然后
联系{name:inputName}

如何过滤事件,以便仅在收到联系人对象时才执行操作

父“创建”组件:

import {Component, OnInit } from 'angular2/core';
import {Contact} from './contact';
import {ContactFormComponent} from './contact-form.component';

@Component({
    selector: 'contact-create',
    template: `
      <h2>Nuevo contacto</h2>

      <div class="panel panel-default">
        <div class="panel-body">

          <contact-form [contact]="contact" (formSubmitted)="saveContact($event)"></contact-form>

        </div>
      </div>
    `,
    directives: [ContactFormComponent]
})
export class ContactCreateComponent {

  contact: Contact = new Contact('');

  constructor(
      private router: Router,
      private contactService: ContactService) { }

  saveContact(args) {
    console.log(args);
  }
}
从'angular2/core'导入{Component,OnInit};
从“/Contact”导入{Contact};
从“./contact-form.component”导入{ContactFormComponent};
@组成部分({
选择器:“联系人创建”,
模板:`
新接触
`,
指令:[ContactFormComponent]
})
导出类ContactCreateComponent{
联系人:联系人=新联系人(“”);
建造师(
专用路由器:路由器,
专用contactService:contactService){}
保存联系人(args){
console.log(args);
}
}
子“表单”组件

import {Component, EventEmitter} from 'angular2/core';
import {NgForm}    from 'angular2/common';
import {Contact}   from './contact';

@Component({
  selector: 'contact-form',
  inputs: ['contact'],
  outputs: ['formSubmitted'],
  templateUrl: 'app/contacts/contact-form.component.html',
})
export class ContactFormComponent {

  contact: Contact;
  formSubmitted: EventEmitter<any> = new EventEmitter();

  onSubmit(contact) { this.formSubmitted.next(contact); }
}
从'angular2/core'导入{Component,EventEmitter};
从'angular2/common'导入{NgForm};
从“/Contact”导入{Contact};
@组成部分({
选择器:'联系方式',
输入:[“联系人”],
输出:['formSubmitted'],
templateUrl:'app/contacts/contact form.component.html',
})
导出类ContactFormComponent{
联系人:联系人;
formSubmitted:EventEmitter=新的EventEmitter();
onSubmit(contact){this.formsubmited.next(contact);}
}

以供参考和添加更多信息注意,在问题中,输出名称最初是
submit
匹配的(OP在问题中重命名了它,因为我在我的问题中没有解释该问题)所以最初的问题是组件捕获了两个事件:OP定义的输出和表单中的事件

跟踪此行为时出现问题(请参阅)。这显然不应该发生


真正的解决方案是在实现上述问题之前,将输出重命名为与DOM submit事件不匹配。

如果将输出重命名为与默认值不匹配,将更简单、更清晰;)我还不够清楚。您的问题是因为您的输出与默认提交事件匹配,这就是为什么它会触发两次。通过重命名您的输出(正如您在问题中所做的那样),您不应该再有问题了。这就是实际发生的情况!谢谢@Eric,不客气!仅供您参考,已经有一个跟踪此行为的程序。您是对的,我专注于日志输出,甚至没有注册事件名称(;我也被它咬了一口。将输出事件名称保持为“提交”被抓了两次。几乎要拉扯我的头发了。感谢@Eri Martinez和Mathius提出这样的问题。+1