の代わりに、観察によって放出された値を返すようにしようと、してみてください
サービス:
単にそのようなクラスのプロパティを設定するように、放出された値を利用する消費者を観測を返すと許可
public getTranslateMenuItem(key: string): Observable<string> {
return this.translate.get(key);
}
コンポーネント:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: '{{title}}'
})
export class AppComponent {
title: string;
constructor(private someService: SomeService) {}
ngOnInit(): void {
this.someService.getTranslateMenuItem('foobar')
.subscribe(
value => this.title = value,
error => console.log(error),
complete => console.log('Completed');
);
}
}
あなたがコンポーネントの値、エラー、および完全に対応し、必要に応じてサービスだけで検索して処理/フォーマット値を処理できるようになります。このアプローチ。
また、コンポーネントのテンプレート内のasyncパイプを使用して、放射された値を購読/購読解除することができます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: '{{title$ | async}}'
})
export class AppComponent {
title$: Observable<string>;
constructor(private someService: SomeService) {}
ngOnInit(): void {
this.title$ = this.someService.getTranslateMenuItem('foobar');
}
}
うまくいけば助けてください!
値を返さず、オブザーバブルを返し、必要に応じてコンシューマがサブスクライブ(次、エラー、完了)してコンポーネントのプロパティを設定したり、エラーを処理したりすることができます。他のオブザーバブルswitchMapやmergeMapなどのアクション演算子を使用すると、それを達成できます。 –
あなたはこれを提案していますか? 'private getTranslateMenuItem(key:string):Observable {}'? –
user3573738