![](/img/trans.png)
[英]What is the advantage of using getters and setters in angular and the private keyword on the property?
[英]What is a reason to use properties of shared service in Angular as private with getters and setters?
在所有手册中,用于在角度组件之间传递数据的共享服务应如下所示。
将 Angular 中共享服务的属性用作 getter 和 setter 的私有属性的原因是什么?
@Injectable()
class SharedService {
private someValue$ = new BehaviorSubject<SomeType>(null);
public getSomeValue(): BehaviorSubject<SomeType> {
return this.someValue$;
}
public setSomeValue(someValue: SomeType): void {
this.someValue$.next(someValue);
}
}
您展示的示例并不是共享服务模式的全貌,尽管它很接近。
您通常不会传递主题,而是传递来自该主题的 Observable。 这可以防止其他人直接向所有订阅者发送信息,但始终通过服务。 通过这种方式,您可以过滤等发送的内容。
@Injectable()
class SharedService {
private someValueSubj = new BehaviorSubject<SomeType>(null);
someValue$ = this.someValueSubj.asObservable();
public getSomeValue(): Observable<SomeType> {
return this.someValue$;
}
public setSomeValue(someValue: SomeType): void {
this.someValueSubj.next(someValue);
}
}
此外,通过在服务中使用方法来扩展此模式,这些方法可以通过 Subject 发送结果:
@Injectable()
class SharedService {
private someValueSubj = new BehaviorSubject<SomeType>(null);
someValue$ = this.someValueSubj.asObservable();
public getSomeValue(): Observable<SomeType> {
return this.someValue$;
}
private setSomeValue(someValue: SomeType): void {
this.someValueSubj.next(someValue);
}
public doSomethingServiceLike():void{
this.setSomeValue(someType);
}
}
通过这种方式,服务可以做它的“事情”,并且所有订阅者都会得到结果。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.