错误TS2339:类型'Subject <string>'上不存在属性'startWith'

时间:2019-03-14 12:31:57

标签: angular

我在Angular 7项目中遇到以下错误。我已经使用npm安装了打字稿,这可能意味着最新的打字稿版本。

  

错误TS2339:类型'Subject '上不存在属性'startWith'。

app.component.ts

this.language
    .startWith(this.translationService.getBrowserLang())
    .subscribe(lang => this.store.dispatch(new LanguageAction(lang)))

tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

tsconfig.app.json
enter image description here

2 个答案:

答案 0 :(得分:1)

您正在尝试以错误的方式使用。 您还必须在主题上使用pipe

https://www.learnrxjs.io/operators/combination/startwith.html

此外,当您使用主题时,它不再是字符串。 并且您正在尝试使用字符串实用程序。

答案 1 :(得分:1)

就像@The Mechanic已经说过的那样,您正在尝试直接在startWith上使用Subject方法。从5.5版开始,运算符为pipeable。如果要过滤出正确的值,请改用此方法:

this.language.pipe(
  startWith(this.translationService.getBrowserLang())
).subscribe(lang => this.store.dispatch(new LanguageAction(lang)));