Не удается разрешить все параметры для компонента при внедрении службы - PullRequest
0 голосов
/ 01 февраля 2020

У меня проблема, когда я внедряю сервис в свой компонент. Сервис предоставляется по всему миру. Я получаю эту ошибку в своем редакторе кода.

Не удается разрешить все параметры SomeComponent в some.component.ts: (?). 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) {}
}

Я просматривал ответы здесь и не мог получить ни одного, который дает ответ. Некоторые ответы дали решение изменить порядок инъекций конструктора.

1 Ответ

0 голосов
/ 01 февраля 2020

После нескольких попыток я понял, что допустил ошибку export default class AppService.

Я обнаружил, что не рекомендуется использовать экспорт по умолчанию в Angular, потому что AOT не работает. Вот статья, которая освещает эту проблему: Почему не рекомендуется "экспортировать по умолчанию" в 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) {}
}

Надеюсь, это поможет кому-то не потерять часы, как я.

...