Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 使用角度为5的组件执行函数_Angular - Fatal编程技术网

Angular 使用角度为5的组件执行函数

Angular 使用角度为5的组件执行函数,angular,Angular,我想创建一个“action”组件,它应该作为链接“a”元素。但是,我想知道单击组件时执行的函数何时完成。基本上,目标是在执行操作时显示消息 我刚刚制作了一个简单的组件: export class ActionComponent { @Input() public loadingLabel: string; @Input() public promise: () => Promise<void>; public running: bo

我想创建一个“action”组件,它应该作为链接“a”元素。但是,我想知道单击组件时执行的函数何时完成。基本上,目标是在执行操作时显示消息

我刚刚制作了一个简单的组件:

export class ActionComponent {

    @Input()
    public loadingLabel: string;

    @Input()
    public promise: () => Promise<void>;

    public running: boolean = false;

    public run(): void {
        this.running = true;

        this.promise().then(() => this.running = false);
    }
}
其中
\u modalService
被注入组件中。当我执行此操作时,控制台显示
this.\u modalService
为null或未定义


需求非常简单,但我无法找到实现它的方法。

您可以通过将ngx加载安装到项目中,并在app.module.ts文件中从“ngx加载”导入{LoadingModule}和在导入数组中添加加载模块来显示加载动画

然后,在组件的html中以及执行操作的链接中,放置以下html:

<ngx-loading [show]="loadingStuff"></ngx-loading>

我不确定我是否遵循了您尝试的操作?我想创建一个显示链接的组件。单击链接时,将显示一个加载微调器,并显示一条消息,直到执行的功能完成。其思想是,该函数正在调用一个web服务,因此我想在执行期间显示一个加载指示器,我不想为该类型的每个链接实现此逻辑。是否有任何理由通过@Input绑定该服务?服务应该通过DI注入构造函数。你在说什么?没有通过输入传递服务。promise只是一个返回承诺的函数。
public async accept(): Promise<void> {
    this._modalService.showModal({
        ...
    });
}
<ngx-loading [show]="loadingStuff"></ngx-loading>
linkClicked() {
    this.loadingStuff = true;
    myService.getSomethingFromDatabase().subscribe(data => {
      //do something with your data
       this.loadingStuff = false;
     })
}