Angular2:获取在EventEmitter中传递的单个参数
我有两个组件,一个“创建”组件和子“表单”组件。我需要表单组件将提交事件与表单数据一起传递 真正的问题是,当我记录收到的事件时,我得到的是2,而不是一个事件/参数。这是它记录的内容: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
事件{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