2017-02-03 27 views
14

Tôi có loại đó của lỗi sau khi triển khai để GitHub-trang với góc-cli:Lỗi: "Không thể giải quyết tất cả các thông số cho e: (?)."

Error: "Can't resolve all parameters for e: (?)."

công trình ứng dụng địa phương. Bạn sẽ đề xuất những bước nào để tìm địa điểm gặp sự cố?

Đã thử với angular-cli beta29beta30.

UPD: Tôi đã xóa Bộ định tuyến khỏi ứng dụng nhằm mục đích thử nghiệm. Không phải tôi chỉ có một người đoán rằng đó là điều gì đó với DI.

UPD2 (FOUND NƠI):

Vấn đề là với ghi đè RequestOptions, vì vậy làm:

export class RequestOptionsService extends RequestOptions {} 

và định nghĩa nhà cung cấp:

{ provide: RequestOptions, useClass: RequestOptionsService }, 

It's still a question for me.

  • không ghi đè lên RequestOptions hàm tạo - lỗi.
  • ghi đè RequestOptions constructor với tham số rỗng - không có lỗi
  • ghi đè RequestOptions constructor với các thông số - Lỗi

Đây là cách làm thế nào tôi ghi đè lên các nhà xây dựng:

constructor(options?: RequestOptionsArgs) { 
    super(options); 
} 

Điều gì có thể sai ở đây ?

UPD3 (Giải Quyết trường hợp riêng):

Vấn đề thực sự là với RequestOptions, vì vậy bạn không nên làm:

export class RequestOptionsService extends RequestOptions {} 

nhưng chỉ:

export class RequestOptionsService extends BaseRequestOptions {} 
+0

Bạn đang sử dụng 'nhập: [RouterModule.forRoot (route, useHash: true)]'? –

+0

không sử dụng, nhưng chỉ cố gắng (RouterModule.forRoot (tuyến đường, {useHash: true})) - cùng một lỗi - https://studytube.github.io/academy2-js –

+0

Nếu nó là Ok bạn có thể chia sẻ mã của bạn? nó sẽ hữu ích hơn! –

Trả lời

1

Hãy chắc chắn rằng:

  • bạn có "emitDecoratorMetadata": true trong bạn tsconfig.js
  • mọi dịch vụ không thiếu @Injectable() trang trí
  • thành phần constructor tiêm dịch vụ của bạn (có họ trôi qua như thông số)
1

dụ chính thức là:

class MyOptions extends BaseRequestOptions { 
    search: string = 'coreTeam=true'; 
} 

bootstrap(App, [HTTP_PROVIDERS, {provide: RequestOptions, useClass: MyOptions}]); 

Trên thực tế, export class RequestOptionsService extends RequestOptions {} cũng sẽ hoạt động hoàn hảo.Có thể nó là vấn đề cụ thể góc-cli (tôi có thể làm điều này trên thiết lập của tôi).

Nếu dịch vụ của bạn có thông số không bắt buộc thì @Injectable() là điều bắt buộc. Ngoài ra, các thông số phải được cung cấp (RequestOptionsArgs trong trường hợp của bạn) hoặc được đánh dấu là @Optional().

Các vấn đề liên quan