角度6:将对象从组件传递到服务

时间:2018-06-29 14:19:49

标签: angular

我想将我的对象从组件传递到服务类。我知道角度级数中有一些可能的方法,但是您可以为我提供一个实现此目标的好方法,非常感谢您的良好建议和编码。

2 个答案:

答案 0 :(得分:3)

您只需为您的服务定义一个setter getter:
组件:

constructor(private myService:MyService){}
ngOnInit(){
    this.myService.setData(this.obj);
    this.myServcie.getData();
}

MyService:

setData(obj){
    this.obj = obj
}

getData(){
    return this.obj;
}

答案 1 :(得分:1)

您可以使用@Input()@Output变量。 @Input()用于将数据从父组件传递到子组件,而@Output()用于将事件从子组件传递到父组件。对于@Output(),您必须在父组件中监听发出的事件。

此外,您可以使用上述共享服务,并使用observables返回subjects

private subject = new Subject();
public obsForComponent = this.subject.asObservable();

setValue(condition: any){
    this.subject.next(condition) // Sets the new Observable value that can be listened in components 
}

ngOnit上的组件中或模板中,只需引用service.ObsForComponent.subscribe(value=>...),如果要设置/发出新的Obs,请service.setValue(something)