如何在角度2中调用另一个组件函数

我有两个组件如下,我想从另一个组件调用一个函数.这两个组件都使用指令包含在第三个父组件中.

组件1:

@component(
selector:'com1'
)
export class com1{
function1(){...}
}

组件2:

@component(
selector:'com2'
)
export class com2{
function2(){...
// i want to call function 1 from com1 here
}
}

我试过使用@input和@output,但我不明白如何使用它,如何调用功能,任何人都可以帮助?

如果com1和com2是兄弟姐妹,可以使用
@component({
  selector:'com1',})
export class com1{
  function1(){...}
}

com2使用EventEmitter发出一个事件

@component({
  selector:'com2',template: `<button (click)="function2()">click</button>`
)
export class com2{
  @Output() myEvent = new EventEmitter();
  function2(){...
    this.myEvent.emit(null)
  }
}

在这里,父组件添加事件绑定以监听myEvent事件,然后在发生此类事件时调用com1.function1().
#com1是一个模板变量,允许从模板中的其他位置引用该元素.我们使用它来make1()com2的myEvent的事件处理程序:

@component({
  selector:'parent',template: `<com1 #com1></com1><com2 (myEvent)="com1.function1()"></com2>`
)
export class com2{
}

有关组件之间通信的其他选项,请参见https://angular.io/docs/ts/latest/cookbook/component-communication.html

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...