Когда вы делаете это:
.subscribe(
this.processData,
...
, это меняет область действия processData
, а новая область не имеет метода validateData
. Вы должны обернуть его в функцию стрелки, чтобы сохранить область действия:
.subscribe(
response => this.processData(response),
...
или использовать bind
:
.subscribe(
this.processData.bind(this),
...
Вот фрагмент кода, демонстрирующий поведение:
class MyClass {
constructor () {
this.funcOne(() => this.funcTwo()) // works
this.funcOne(this.funcTwo.bind(this)) // works
this.funcOne(this.funcTwo) // what you're doing, doesn't work
}
funcOne (func) {
func()
}
funcTwo () {
this.funcThree()
}
funcThree () {
console.log("success")
}
}
new MyClass()