Angular 6重用onclick事件

时间:2018-12-13 18:08:21

标签: angular typescript

我有一个onclick事件,它将重定向到带有正确查询参数的新页面。我将在大约5个其他地方使用相同的功能,我试图将其放在一个公用的位置以供重用,而不是一遍又一遍地编写相同的代码。这只是一个简短的例子。希望我能了解如何在组件之间共享它。

我将功能移至的服务层将在多个组件之间共享。 onViolatorClick是需要共享的内容。

import { Injectable } from '@angular/core';
import { Router } from "@angular/router";

@Injectable({
  providedIn: 'root'
})
export class RoutesService {

  constructor(
    private router: Router
  ) { }

  public onViolatorClick(value): void {
    alert(value);

    this.router.navigate(["vio-violator"], {
      queryParams: { dmid: value }
    });
  }
}

HTML,基本的,但我知道如果该功能位于组件内部,则可以正常工作

<button (click)="onViolatorClick(dataItem.dmid)">Test!</button>

组件,这是我不确定如何正确使用onViolatorClick的地方

import {Component, OnInit} from "@angular/core";
import {MyMappService} from "./my-mapp.service";
import {MyMappProducts} from "./my-mapp.model";
import { onViolatorClick } from '../../shared/routes/routes.service';

@Component({
    templateUrl: "./my-mapp.component.html"
})
export class MyMappComponent implements OnInit {
    mid: string;
    getMyMappProducts: MyMappProducts[];

    constructor(
        private myMappService: MyMappService,
    ) {}

    ngOnInit() {
        this.getMyMappProducts = [];
        this.myMappService.getMyMappProducts("1").subscribe(res => this.getMyMappProducts = res);
    }
}

2 个答案:

答案 0 :(得分:1)

在组件的构造函数中获取服务

constructor(private routesService: RoutesService){}

然后像这样使用它

this.routesService.onViolatorClick()

答案 1 :(得分:0)

您需要在component.ts文件的构造函数文件中添加服务。

1)在ts文件中导入服务文件。

2)在构造函数中添加服务文件。

constructor(private service : RoutesService)

3)现在,您可以轻松地调用method。

this.service.onViolatorClick();