戻りデータモデルのサービスがあります。モデルには DateTime プロパティ ( RelatedDateTime ) が含まれています - サーバーから返された現在の UTC DateTime です。このデータを、サービスを実行するコンポーネントとは別のコンポーネントで使用したいと考えています。そのためにBahaviorSubjectを使用して います( Subjectを使用して BahaviorSubject に変更しました)。それは非常に単純なはずですが、どういうわけか何かが欠けています-オブザーバブルが発行されていません-データを必要とするコンポーネント( HeaderComponent )がデータを取得していません。私のコードを見てください:
export class MyService
{
content : any;
//I've changed the Subject to BahaviorSubject
timeOfExecutionSubject = new BahaviorSubject<Date>(new Date());
timeOfExecutionSubjectChanged : Observable<Date> = this.timeOfExecutionSubject.asObservable();
constructor (private httpClient : HttpClient){}
getData()
{
return this.httpClient.get<myModel>(<httpGetUrl>)
.pipe
.tap(
{
res => this.content = res;
this.timeOfExecutionSubject.next(content.RelevantDateTime);
}),
catchError(error => throwError(error))
);
}
getRelevantDateTime()
{
return this.timeOfExecutionSubjectChanged;
}
}
これは、サービスを実行するコンポーネントです。
export class MainComponent // This component execute the service
{
constaructor(private myService : MyService ){}
ngOnInit()
{
let sub = this.myService.getData().
subscribe (res =>
{
this.setData(res);
})
}
}
これは、RelevantDataTime を必要とするコンポーネントです
export class HeaderComponent implements OnInit
{
executionDateTime : string;
constructor(private myService: MyService)
{
this.myService.getRelevantDateTime().subscribe(
result => this.executionDateTime = moment(result).format("HH:mm");
)
}
}