En el ángulo 2, ¿es posible acceder al componente que llama (componente que está llamando al servicio) desde el servicio?
Digamos que mi componente es:
@Component({
selector: "my-component",
templateUrl: "myTemplate.html",
providers: [Service]
})
export class MyComponent{
constructor(private service:Service) {
service.accessComponent();
}
callMe(){
console.log("hello");
}
}
Y mi servicio sería:
@Injectable()
export class Service{
accessComponent(){
var myComponent = ???;
myComponent.callMe();
}
}
Respuestas
1 para la respuesta № 1En primer lugar, no debes usar addEventListener
, porque para manejar click, angular2 tiene su propia manera de hacer eso - <div (click)="calledFunc()"></div>
. Es una forma idiomática de agregar evento click en angular2. (Según comentario de discusión)
0 para la respuesta № 2
esto es incorrecto llamar componente desde el servicio. Usted debe llamar al servicio en componente! Esta es la arquitectura de angular 2. Lee esto
Servicio:
@Injectable()
export class Service{
accessComponent(){
alert("Hi!")
}
}
Componente:
@Component({
selector: "my-component",
templateUrl: "myTemplate.html",
providers: [Service]
})
export class MyComponent{
constructor(private service:Service) {
service.accessComponent(); //and you see alert!
}
}