是否可以从服务直接在组件中执行方法?
@Component({
selector:'component'
})
export class Component{
function2(id){
console.log('ID printed '+ id);
}
}
@Injectable()
export class Service {
callfunction2() {
//how?;
}
}
答案 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);
}
}