#angular
#angular
Вопрос:
Я получаю приведенную ниже ошибку в проекте Angular 7. Я установил typescript с использованием npm, что может означать последнюю версию typescript.
ошибка TS2339: Свойство ‘startWith’ не существует для типа ‘Subject< строка>’.
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"
]
}
}
Комментарии:
1. вы пытаетесь использовать утилиту для перебора строк w3schools.com/jsref/jsref_startswith.asp Я думаю, вам нужно внести логику в использование
pipe
2. learnrxjs.io/operators/combination/startwith.html
3. @Bibin Не могли бы вы, пожалуйста, также добавить код того, как вы объявляете / инициализируете или внедряете
this.language
?
Ответ №1:
вы пытаетесь использовать неправильным образом. вы также должны использовать pipe
для subject.
https://www.learnrxjs.io/operators/combination/startwith.html
Также, когда вы используете subject, это больше не строка. и вы пытаетесь использовать утилиту string.
Ответ №2:
Как уже сказал @The Mechanic, вы пытаетесь использовать startWith
метод непосредственно на Subject
. Начиная с версии 5.5, операторы являются конвейерными. Если вы хотите отфильтровать правильные значения, используйте это вместо:
this.language.pipe(
startWith(this.translationService.getBrowserLang())
).subscribe(lang => this.store.dispatch(new LanguageAction(lang)));