Angular 2:使用(单击)调用服务中的函数

时间:2016-10-16 18:30:14

标签: angular

我想从你点击某个东西时创建的服务中调用一个函数,但是我无法让它工作。我尽可能地简化了它,看看这种功能是否可行。

我有以下HTML:

<a (click)="SellingVarietiesService.goToVarietyDetails(3)">Test</a>

以下是我要调用的函数的代码:

@Injectable()
export class SellingVarietiesService {    

    constructor(private http: Http) { }

    public goToVarietyDetails(varietyId: any): void {        
        console.log(varietyId);
    }
}

HTML是通过.NET / C#生成的,并从我创建的服务中的HTTP调用返回。是否可以使用返回给我的HTML在我的服务中调用该函数?我的语法错了吗?

编辑:

我在返回的HTML上使用了DomSanitizer(包含(点击)功能的HTML)。以下是我的组件中使用它的代码:

// Get Variety List
getVarietyList() {        
    this.sellingMenuService.getVarieties().subscribe(res => {            
        this.varietyListSelling = this.sanitizer.bypassSecurityTrustHtml(res);
    });
}

以下是HTML的位置:

<div *ngIf="varietyListSelling" [innerHtml]="varietyListSelling"></div>

以下是res的示例:

<div class="varietyName">
    <a class="" (click)="sellingVarietiesService.goToVarietyDetails(1176)" >Starbor</a>
    <a href="#deleteVarietySelling" id="deleteVarietySelling_1176" class="quick-delete fa-minus-button" title="Delete" data-toggle="modal">
        <i class="fa fa-minus"></i>
    </a>
</div>

1 个答案:

答案 0 :(得分:3)

您需要将服务注入托管您的html的组件

@Component({
  template: `<a (click)="svs.goToVarietyDetails(3)">Test</a>`
})
export class MyComponent {
  constructor( public svs: SellingVarietiesService) {}
}

然后您可以通过组件属性访问它。