打字稿错误:'Observable <any>'类型中不存在属性'value'

be-*_*ied 3 typescript ionic2 angular

这是我编译时抛出错误的代码:

export class NoticeService {
  public notice: Observable<any>;
  private observer: any;

  constructor(private translate: TranslateService) {
    this.notice = new Observable(observer => {
      this.observer = observer;
    }).share();
  }

  create(value: string) {
    let translatedValue = this.translate.get(value).value;
    this.observer.next(translatedValue);
  }
}
Run Code Online (Sandbox Code Playgroud)

输出console.log(this.translate.get(value))是:

ScalarObservable {_isScalar: true, value: "Some proper value!", etc.
Run Code Online (Sandbox Code Playgroud)

输出console.log(translatedValue)是:

"Some proper value!"
Run Code Online (Sandbox Code Playgroud)

错误是:

ERROR in [default] /somePath/notice.service.ts:21:52
Property 'value' does not exist on type 'Observable<any>'.
Run Code Online (Sandbox Code Playgroud)

第21行是:

let translatedValue = this.translate.get(value).value;
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?


更新:

我正在使用ng2-translate,这是get方法:

/**
 * Gets the translated value of a key (or an array of keys)
 * @param key
 * @param interpolateParams
 * @returns {any} the translated key, or an object of translated keys
 */
TranslateService.prototype.get = function (key, interpolateParams) {
    var _this = this;
    if (!key) {
        throw new Error('Parameter "key" required');
    }
    // check if we are loading a new translation to use
    if (this.pending) {
        return this.pending.map(function (res) {
            return _this.getParsedResult(_this.parser.flattenObject(res), key, interpolateParams);
        });
    }
    else {
        var translations = void 0;
        if (this.translations[this.currentLang]) {
            translations = this.parser.flattenObject(this.translations[this.currentLang]);
        }
        return Observable_1.Observable.of(this.getParsedResult(translations, key, interpolateParams));
    }
};
Run Code Online (Sandbox Code Playgroud)

Thi*_*ier 8

由于返回了一个observable,您需要订阅它.像这样的东西:

create(value: string) {
  this.translate.get(value).subscribe(translatedValue => { 
    this.observer.next(translatedValue);
  });
}
Run Code Online (Sandbox Code Playgroud)

而不是试图直接从它获得价值......