Используйте модификаторы доступа к свойству:
@Injectable()
export class MyService{
private myValueSubject: BehaviorSubject<string> = new BehaviorSubject<string>("");
public readonly myValueObservable: Observable<string> = this.myValueSubject.asObservable();
public setData() {
this.myValueSubject.next("123");
}
public getData(): string {
return this.myValueSubject.value;
}
}
Экземпляры MyService
не будут иметь общедоступной темы.
Обычно я стараюсь избегать метода, подобного getData
, предпочитающего подписки к соответствующей наблюдаемой. Если я когда-либо пишу такие методы, это предупреждающий флаг для переоценки моей архитектуры. Если вы просто хотите сохранить значение и получить / установить его с помощью методов, используйте простое старое частное свойство. Вся цель предмета побеждена, если вы когда-либо получаете значение только с помощью метода, подобного getData()
Ознакомьтесь с документацией для классов машинописи, в которой рассматриваются модификаторы доступа: https://www.typescriptlang.org/docs/handbook/classes.html