如何直接从服务中调用组件中的函数?

时间:2019-05-30 15:41:25

标签: angular typescript angular-services

是否可以从服务直接在组件中执行方法?

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


@Injectable()

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

1 个答案:

答案 0 :(得分:1)

您不应从服务中调用组件函数。

不过,您可以在服务中创建一个主题,然后从组件中进行订阅。

在这种情况下,一旦传递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);
  }
}