我有以下功能:
private getTranslateMenuItem(key: string): string {
this.translate.get(key).subscribe((res: string) => {
return res;
});
}
我需要它,当我称之为:
时,它会返回我的数据let title = this.getTranslateMenuItem('pop');
答案 0 :(得分:3)
不要尝试返回observable发出的值,而是尝试简单地返回Observable并允许使用者使用发出的值,例如设置类属性:
<强>服务强>
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');
}
}
希望这有帮助!