我的组件中有一个表单,我正在将它与反应表单一起使用,我想通过我的服务访问这个表单。
所以我们说:
const id = MyComponent.id
在我的组件中:
@Output: public id: number = 7;
我认为服务是一个声明和实例化外部调用(如API调用(的空间。我也使用服务作为";"一网打尽";。事实上,在Angular中,当您在组件的构造函数中定义服务时,它将在整个会话中保持打开状态。
因此,有几种方法可以传递数据。您可以以静态方式进行,也可以以动态方式进行,以便监视事件。
例如:
在服务
export class MyService {
myString: string = '';
constructor(){ }
getMyString(): String{ return this.myString; }
setMyString(newVal: string){
this.myString = newVal;
}
}
组件内
export class MyComponent implements onInit {
myString = undefined;
constructor(myService: MyService ){}
ngOnInit(){
this.myString = this.myService.getMyString();
}
}
否则,还有另一种方法,它允许您在值发生更改时进行检查。为此,我使用BehaviorSubject。资源更贵,但允许订阅,但你必须考虑在ngOnDestroy中取消订阅。
因此,要在服务中做到这一点:
在服务
export class MyService {
myString: behaviorSubject= new behaviorSubject('');
constructor(){ }
getMyString(): Observable{ return this.myString.asObservable(); }
setMyString(newVal: string){
this.myString.next(newVal);
}
}
在组件中
export class MyComponent implements onInit {
myString;
constructor(myService: MyService ){}
ngOnInit(){
this.myService.getMyString().subscribe((data)=>myString=data);
}
}
我希望这些解释能对你有所帮助。我给你举了一个字符串的例子,但这当然只是一个样本