Quiero llamar a una función de servicio compartido desde el archivo de vista del componente "Otro".

Por ejemplo, para eliminar un registro, quiero establecer algo como esto:

<tr *ngFor="let ddata of tableData.data; let i = ddata" 
(click)="delete_record(ddata)" 
[class.active]="ddata.discountauthorizationid == selectedRow">

Aquí delete_record debe ser parte de un servicio que inyectaré en el componente correspondiente.

0
Talk is Cheap Show me Code 13 ene. 2018 a las 09:10

3 respuestas

La mejor respuesta

No hay forma de llamar al servicio desde la vista (plantilla) sin inyectarlo en su componente.

Puede inyectar el servicio en una propiedad pública que también le permite usar los métodos de servicio dentro de la plantilla.

constructor(public yourService: YourService) {

}

Su plantilla:

<a (click)="yourService.yourMethod()">Test mehod</a>

Nota: tenga en cuenta que la mejor solución es llamar a los métodos de sus componentes en lugar de utilizar los métodos de servicio. Los servicios son una excelente manera de compartir información entre clases que no se conocen

7
Mohammad Kermani 13 ene. 2018 a las 07:00

Para una buena práctica, es bueno usar el servicio en el alcance private y usar un método para devolverlo a la vista.

Como en esta publicación

Inyección de dependencia mecanografiada pública vs privada

2
apaternina 22 ago. 2019 a las 21:17

Todas las propiedades definidas dentro de la clase de componente se pueden usar en la plantilla.

0
santosh singh 13 ene. 2018 a las 06:20