Как напрямую вызвать функцию в компоненте из сервиса? - PullRequest
0 голосов
/ 30 мая 2019

Можно ли выполнить метод в компоненте непосредственно из службы?

@Component({
  selector:'component'
})
export class Component{
  function2(id){ 
    console.log('ID printed '+ id);
  }
}


@Injectable()

export class Service {
  callfunction2() {
    //how?;
      }
}

1 Ответ

1 голос
/ 30 мая 2019

Вы не должны вызывать функцию компонента из службы.

Однако вы можете создать тему в сервисе и подписаться на нее из компонента.

В этом случае после прохождения callfunction2 он выдает значение id для субъекта, и все компоненты, которые подписываются на этот субъект, получат значение

@Component({
  selector:'component'
})
export class Component{

  constructor(private service: Service) {}

  function2(id){
    this.service.subject.subscribe(id => {
        console.log('ID printed ' + id);
    });
  }
}


@Injectable()

export class Service {

  public subject: Subject<any> = new Subject<any>();

  callfunction2(id) {
    this.subject.next(id);
  }
}
...