带有参数的Angular 5 Component输入函数

标签 angular typescript angular5

在 Angular 2+ 组件中,如何传入带参数的回调函数? 我最初的假设是这样的

<app-example [onComplete]="doThing('someParam')"></app-example>

有时我不需要任何参数,像这样:

<app-example [onComplete]="doSomeThingElse()"></app-example>

然后在我的组件中

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
})
export class ExampleComponent {
  @Input() public onComplete: () => void;

  //run `this.onComplete()` somewhere as needed
}

但是,最终发生的是 doThing('someParam')doSomeThingElse() 在没有任何交互的情况下立即被调用。

我应该如何将回调函数传递给稍后调用的组件?


编辑:

我在这里试图解决的实际问题是能够在以后运行任何传入的函数。这是一个确认组件,它会询问用户“你确定要继续吗?”然后如果他们按下“是的,我确定”按钮,传入的函数就会运行。

最佳答案

这是@toskv 正在寻找的@Output 语法示例,Angular pass callback function to child component as @Input

所以对于你的例子,

<app-example 
  (onComplete)="doThing()" 
  [completedParam]="'someParam'"></app-example>
@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
})
export class ExampleComponent {
  @Output() public onComplete: EventEmitter<any> = new EventEmitter();
  @Input() completedParam;

  runOnComplete(): void {
    this.onComplete.emit(this.completedParam);
  }
}

感觉不如 [onComplete]="doThing.bind(this, 'someParam')"

关于带有参数的Angular 5 Component输入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48012662/

相关文章:

timezone - microsoft graph createreply 时区错误

highcharts - 如何在 angular 的 Highcharts 包装器中使用添加系列和更新方法?

angular - 使用@HostListener 的窗口滚动事件不起作用

javascript - 是否有一个库可以实现 Angular 为2的vnc?

javascript - TypeScript 默认导入与非默认导入?

Angular2 NGRX/商店 View 未更新

angular - Angular 4 的箭头函数(Lambda 函数)

angular - 如何轻松地将 Observable 转换或分配给 Behavior Subject,以便其他组件可以共享它

dependency-injection - 注入(inject)与子组件相同类型的父组件

angular - 如何在 Angular 中缩短文件路径?