首页 > 解决方案 > 未捕获(承诺):TypeError:无法读取 angular2+ 中未定义的属性“get”

问题描述

我在 angular2+ 文件中创建了一个组件。我想向 nodeJs 服务器发出一个 http 请求。但是,我不断得到->

Uncaught (in promise): TypeError: Cannot read property 'get' of undefined
TypeError: Cannot read property 'get' of undefined

不明确的

需要注意的是,我什至无法检索存储在一个函数中并且(无法)在另一个函数中访问的全局变量的值。这是我第一次面对它。

代码 -

app.component.ts

import { HttpClient, HttpParams, HttpRequest, HttpEvent } from '@angular/common/http';

@Injectable()
export class MachineMergerComponent implements OnInit {

    constructor(private http: HttpClient) {}

    onFileLoadTopFive(fileLoadedEvent) {

        // -----===================  Top Five Neovis  ==================== -------------

        this.rhsNameTopFive = [];
        this.relationshipInfo = [];

        for (var i = 0; i < 5; i++) {

            this.rhsNameTopFive.push(this.objectValueAfterConfidence1[i].rhs[0])

            console.log("this.rhsNameTopFive = ", this.rhsNameTopFive)

            // http request

            var relationObj = {
                'relationObj1': this.rhsNameTopFive[i]
            }

        }
        console.log("relationObj = ", relationObj);


        this.http.get("http://localhost:3003/seekRelationship?relationObj=" + this.rhsNameTopFive[0])
            .map(Response => Response)
            .catch((err) => {
                console.log("err =", err)
                return Observable.throw(err);

            })
            .subscribe((res: Response) => {

                console.log("XXXXXXXXXXXX Response on /seekExtraction", res);

                this.relationshipInfo[i] = res;

                console.log(" this.relationshipInfo[" + i + "]", this.relationshipInfo[i])
            })
    }

}

app.module.ts

import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    CommonModule,

    FormsModule,
    // HttpModule ,

    HttpClientModule,

  ],
  declarations: [   MachineMergerComponent,  ]
})
export class ApiSequenceModule { }

标签: angularhttpgetangular-httpclient

解决方案


MachineMergerComponent 是一项服务。将其添加到提供者列表下。(也可以考虑将其重命名为 MachineMergerService )

declarations: [  ... ],
providers:    [ MachineMergerComponent ]

推荐阅读