0

戻りデータモデルのサービスがあります。モデルには 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");
            )
        }
    }

4

1 に答える 1