Tôi đang cố gắng chuyển ứng dụng Ionic2.beta11 của mình sang bản phát hành Ionic2.rc0 mới. Hầu hết mọi thứ đã khá thẳng về phía trước, nhưng tôi có một vấn đề với trình biên dịch AoT.Làm thế nào tôi có thể vượt qua một đối số cho một nhà xây dựng nhà cung cấp trong Ionic2/Angular2?
Tôi có một AuthService:
@Injectable()
export class AuthService {
constructor(@Inject(Http) http: Http) {
this.http = http;
}
...
}
Tôi tiêm nó vào ứng dụng của tôi trong src/app/app.module.ts
file:
@NgModule({
declarations: [
MyApp,
...
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
...
],
providers: [
AuthService
]
})
Tất cả mọi thứ hoạt động tốt khi chạy ion phục vụ, nhưng khi tôi cố gắng xây dựng tôi nhận được lỗi sau:
ngc error: Error: Error at .../.tmp/app/app.module.ngfactory.ts:397:78: Supplied parameters do not match any signature of call target.
Dòng 396 - 399:
get _AuthService_74():import44.AuthService {
if ((this.__AuthService_74 == (null as any))) { (this.__AuthService_74 = new import44.AuthService()); }
return this.__AuthService_74;
}
Vấn đề là new import44.AuthService()
mong đợi đối số của loại http.
Điều thú vị là mọi thứ hoạt động tốt khi tôi thay thế constructor(http: Http)
bằng constructor()
trong tệp định nghĩa theo cách thủ công.
Tôi đã đọc qua tất cả các câu trả lời của StackOverflow mà tôi có thể tìm thấy, nhưng không có giải pháp nào giải quyết được vấn đề của tôi.
Tôi có cần thay đổi hàm tạo trong AuthService hoặc cách tôi chèn nó vào ứng dụng của mình không? Cảm ơn sự giúp đỡ của bạn.
Là một giải pháp tạm thời tôi đã đối số tùy chọn và nó hoạt động ngay bây giờ. Nhưng tôi vẫn đang tìm một giải pháp thích hợp. –