私の質問はこれらと非常に似ていますが、私は問題を解決できませんでした。ここでサブスクライブ関数内のコンポーネントの 'this'を取得できません
cannot access to this of component in subscribe function
'this' scope in typescript callback function
Cannot Access Component Variables in Subscribe when using chrome inspector
unable to get component variables inside a RxJS subscribe() function
私typescriptですコンポーネントクラスです:
export class Test{
x: string;
}
export class TestComponent implements OnInit{
test: Test;
constructor(private testService: TestService){}
ngOnInit(){
this.testService.getTest()
.subscribe((res) => { this.test = res.test;}, ...);
console.log(this.text.x) //it becomes undefined
}
}
私は一口-Tを使用していますypescript、出力は次のようになります。
//when targeting es6
let testComponent = class TestComponent ... {
constructor(testService){
this.testService = testService;
}
ngOnInit(){
this.testService.getTest()
.subscribe((res) => {this.test = res.test;}, ...);
console.log(this.text.x)
}
}
//when targeting es5
var TestComponent = (function(){
function TestComponent(testService){
this.testService = testService;
}
TestComponent.prototype.ngOnInit = function(){
var _this = this;
this.testService.getTest()
.subscribe(function (res) { _this.test = res.test }, ...);
console.log(this.text.x)
}
}())
私は「this.test.x」に到達しようとするとき、私は両方の出力を持つブラウザから次のエラーを取得します。
EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property 'x' of undefined
私はthis.test
にログインすると、それはundefined
です。私のTestServiceは正しく注入され、リクエストは私のAPIに来て、res.test
には必要なものが含まれていますが、それは常に定義されていないのでthis.test
と一緒に使うことはできません。私はどこが間違っているのか分かりません。私を助けることができる人は誰ですか?最後に、ブラウザの互換性など、es5またはes6を検討する際に、どちらをターゲットにすべきか質問したいと思います。
「何でもいいですか」とは何ですか?あなたのコードにあなたが投稿したことはありませんか?コンストラクタを展開し、サービスがコンストラクタに渡される/注入されることを確認するために 'console.log(testService)'を配置します。 – Martin
これは私のテストクラスのちょうどプロパティです、私は 'whateverItIs'プロパティ名instedを書いた。 TestServiceが適切に注入され、私のAPIがリクエストを受け取ります。 – ulubeyn
テストクラスのコードの一部を含めてください。ありがとう。私はちょうど実際のプロパティ名が何であるかを知りたいので、どのオブジェクトが「未定義」であるかを見ることができます。 – Martin