Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 注入组件的服务在构造函数外部未定义_Angular_Angular Services - Fatal编程技术网

Angular 注入组件的服务在构造函数外部未定义

Angular 注入组件的服务在构造函数外部未定义,angular,angular-services,Angular,Angular Services,所以我遇到了一个奇怪的问题,我试图将一些服务注入到组件中,但当我想在函数上使用它时,其中一些是未定义的 我以前在其他组件上使用过这些服务,没有问题。此外,我已经在构造函数中添加了关键字“public”或“private” export class GeneSearchComponent { constructor(public router: Router, public clinicalFilteringService: ClinicalFilterin

所以我遇到了一个奇怪的问题,我试图将一些服务注入到组件中,但当我想在函数上使用它时,其中一些是未定义的

我以前在其他组件上使用过这些服务,没有问题。此外,我已经在构造函数中添加了关键字“public”或“private”

export class GeneSearchComponent {
    constructor(public router: Router,
                public clinicalFilteringService: ClinicalFilteringService,
                public searchBarService: SearchBarService ) {
                  //They all are defined within constructor
                  console.log(this.clinicalFilteringService);
                  console.log(this.router);
                  console.log(this.searchBarService);
    }

    test(query) {
        //clinicalFilteringService and router are undefined 
        console.log(this.clinicalFilteringService);
        console.log(this.router);
        //searchBarService is still defined
        console.log(this.searchBarService);
    }
}
什么可能导致问题

编辑:
因此,我发现将函数更改为arrow函数可以解决问题,但我仍然不知道为什么它可以与arrow函数一起工作,而不能在没有它的情况下工作。

您的所有服务都使用
HttpClient
?@manish nope,我的任何服务都不使用HttpClient所以将函数更改为arrow函数可以解决问题,但不知道为什么它会起作用。如果有人知道,你们可以让我知道。你们也可以添加那些
edit
s吗?@user3794740用于箭头函数查询:箭头函数没有自己的“this”。使用封闭词法范围的“this”值;箭头函数遵循普通变量查找规则。因此,在搜索当前作用域中不存在的“this”时,他们最终从其封闭作用域中找到了“this”。您的所有服务是否都使用了
HttpClient
?@manish nope,我的任何服务都没有使用HttpClient。因此,将该函数更改为箭头函数可以解决问题,但不确定它为什么有效。如果有人知道,你们可以让我知道。你们也可以添加那些
edit
s吗?@user3794740用于箭头函数查询:箭头函数没有自己的“this”。使用封闭词法范围的“this”值;箭头函数遵循普通变量查找规则。因此,在搜索当前范围中不存在的“this”时,他们最终从其封闭范围中找到了“this”。