angular - 在 Angular 4 Typescript App 的回调中运行时调试期间未定义 'this.variable'

标签 angular typescript webpack ecmascript-6 rxjs

我的 friend 们,

我已经开始开发 Angular4 应用程序并遇到了以下(webpack?)奇怪的行为。当在可观察的 getHistory(一个 API 调用)的回调中在 chrome 中进行运行时调试时,当我将鼠标悬停在它上面时,this.varTimeSeries 显示为未定义。

Console.log(this.varTimeSeries) 在控制台中记录正确的对象。

您可以看到我正确地使用了粗箭头语法 =>,它应该在回调中返回组件的 this

知道为什么会这样吗?

public getHistory() {

    this.varHistoryService.getHistory(this.selectedConfig.NAME)
        .subscribe(res => {
            this.varTimeSeries = res;
            console.log(this.varTimeSeries);
        },
        errors => {
            console.log(errors);
        });
}

这是我的 tsconfig.webpack.json 文件的样子:

{
  "compilerOptions": {
    "target": "es6",
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "noEmit": true,
    "importHelpers": true,
    "noEmitHelpers": true,
    "strictNullChecks": false,
    "lib": [
      "es2015",
      "dom"
    ],
    "typeRoots": [
      "node_modules/@types"
    ],
    "types": [
      "hammerjs",
      "node"
    ]
  },
  "exclude": [
    "node_modules",
    "wwwroot",
    "Client/**/*.spec.ts",
    "Client/**/*.e2e.ts"
  ],
  "awesomeTypescriptLoaderOptions": {
    "forkChecker": true,
    "useWebpackText": true
  },
  "angularCompilerOptions": {
    "genDir": "./compiled",
    "skipMetadataEmit": true
  },
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

最佳答案

问题出在 tsconfig.json 文件中,该文件错误地引用了 es5!

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "devtool": "source-map",
    "sourceMap": true,
    "noEmit": true,
    "importHelpers": true,
    "noEmitHelpers": true,
    "noUnusedLocals": true,
    "strictNullChecks": true,
    "noImplicitAny": true,
    "skipDefaultLibCheck": true,
    "skipLibCheck": true,
    "noImplicitReturns": true,
    "lib": [
      "dom",
      "es6"
    ],
    "typeRoots": [
      "node_modules/@types"
    ],
    "types": [
      "hammerjs",
      "jasmine",
      "node",
      "source-map",
      "uglify-js",
      "webpack"
    ]
  },
  "exclude": [
    "node_modules",
    "dist",
    "compiled"
  ],
  "compileOnSave": false,
  "buildOnSave": false
}

关于angular - 在 Angular 4 Typescript App 的回调中运行时调试期间未定义 'this.variable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43992456/

相关文章:

javascript - 无法将属性 "max-content"添加到 @key-frames

javascript - 尽管关联的 getter 可以工作,但对 Typescript setter 的调用不会返回函数

angular - Leaflet MarkerCluster removeOutsideVisibleBounds 不起作用

angular - ionic Angular 平移不起作用

angular - 如何使用 rollup 和 terser 获取原始 TypeScript 代码的源映射?

javascript - 如何从 WebdriverIO 中的 WebElement 继承

angular - 从 API 响应中读取响应 header - Angular 5 + TypeScript

webpack - HtmlWebpackPlugin 包含的包文件的顺序

javascript - 如何在 Webpack 中对 CSS 文件进行版本控制并更新 list ?

javascript - Electron: app.on ('ready' ) 永远不会被调用