[英]how to call a method in one component from another component is angular2
这里方法 load() 在app.component.ts
定义, <app-child></app-child>
在app.component.html
传递, 'load('1', 'value', msc)'
方法是从child.component.html
。
如何调用load()方法?
app.component.ts
-----------------
load(id, value, msc){
alert(id)
}
app.component.html
----------------------
<app-child></app-child>
child.component.html
---------------------
<div (click)= 'load('1', 'value', msc)'>btn1</div>
您可以使用共享服务并使公共功能在两个组件中都可用
您可以为此使用事件绑定:
// parent template
<app-child (onLoad)="load(...$event)></app-child>
// child template
<div (click)='onLoad.emit(['1', 'value', msc])'>btn1</div>
// child controller
@Output() onLoad = new EventEmitter<any>();
https://angular.io/guide/template-syntax#custom-events-with-eventemitter
您可以使用 @Output 并发出一个包含三个参数的对象:
// app.component.ts: load(id, value, msc){ alert(id) } loadEv = ($event) => { this.load($event.param1, $event.param2, $event.param3); } // app.component.html: <app-child (loadEvent) = loadEv($event)></app-child> // child.component.html: <div (click)= 'load('1', 'value', msc)'>btn1</div> // child.component.ts: import { Output, EventEmitter } from '@angular/core'; @Output() loadEvent = new EventEmitter<any>(); load(param1, param2, param3): any { this.loadEvent.emit({param1, param2, param3}); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.