【问题标题】:Can't resolve all parameters for component when service is injected注入服务时无法解析组件的所有参数
【发布时间】:2020-02-01 10:23:46
【问题描述】:

我在向组件中注入服务时遇到问题。该服务在全球范围内提供。 我在代码编辑器中收到此错误。

无法解析 some.component.ts 中 SomeComponent 的所有参数:(?)。 ng(0)

奇怪的是,我的应用程序运行正常,编译器没有抛出任何错误。

服务

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root',
})
export default class AppService {
  constructor(private _http: HttpClient) {}

  someMethod() {}
}

组件

import { Component } from "@angular/core";
import AppService from "./app.service";

@Component({
  selector: "app-some-component"
})
export class SomeComponent {
  constructor(private _appService: AppService) {}
}

我在这里查看答案,但找不到任何提供答案的答案。 一些答案给出了改变构造函数注入顺序的解决方案。

【问题讨论】:

    标签: angular typescript dependency-injection angular-services


    【解决方案1】:

    经过多次尝试,我发现我犯了export default class AppService的错误。

    我发现不建议在 Angular 中使用默认导出,因为 AOT 不起作用。这是涵盖该问题的文章:Why isn't "export default" recommended in Angular?

    所以解决方案是始终正常导出一个类:

    服务

    import { Injectable } from '@angular/core';
    import { HttpClient } from '@angular/common/http';
    
    @Injectable({
      providedIn: 'root',
    })
    export class AppService {
      constructor(private _http: HttpClient) {}
    
      someMethod() {}
    }
    

    组件

    import { Component } from "@angular/core";
    import { AppService } from "./app.service";
    
    @Component({
      selector: "app-some-component"
    })
    export class SomeComponent {
      constructor(private _appService: AppService) {}
    }
    

    希望这可以帮助别人不要像我一样浪费时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-15
      • 2020-01-02
      • 2018-12-06
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多