我一直试图将我的应用程序切换到AoT编译,并且在应用程序加载时在生产环境中收到此错误(它在本地工作正常)。
constructor(private http:Http, private iconConfiguror:IconConfiguror) {
似乎错误来自提供IconService的模块。图标服务构造函数看起来像
HttpModule
所以我的问题是这个错误是什么意思,为什么它只会在prod环境中发生(我已尝试在本地启用prod模式)?
似乎这意味着未提供http和图标配置参数,但图标配置在应用模块级别提供,IconModule
导入IconService
其中提供@NgModule({
imports: [
CommonModule,
HttpModule,
],
declarations: [
IconComponent,
],
exports: [
IconComponent,
],
providers: [
IconService,
__platform_browser_private__.BROWSER_SANITIZATION_PROVIDERS,
],
})
。
export * from "./components/icon/icon.configuror";
export * from "./components/icon/icon.service.provider";
export * from "./components/icon/icon.service";
export * from "./components/icon/icon.component";
export * from "./components/icon/icon.module";
我们的图标组件的桶。
function myFunction() {
var x = document.getElementById("mySelect").value;
document.getElementById("demo").innerHTML = "You selected: " + x;
console.log("x:",x);
}
答案 0 :(得分:6)
通过以不同的方式提供IconService来解决此问题。
{
provide: IconService,
useFactory: iconServiceFactory,
deps: [Http, IconConfiguror],
},
和工厂本身
export function iconServiceFactory(http: Http, iconConfiguror: IconConfiguror) {
return new IconService(http, iconConfiguror);
}
我想由于某种原因没有提供Http(即使导入了HttpModule),所以我不得不将它声明为依赖。
答案 1 :(得分:5)
此错误的一个可能原因是,如果您没有使用IconService
装饰@Injectable()
课程。如果这是原因,在类声明之上添加该装饰将修复错误。
答案 2 :(得分:2)
我遇到过类似的问题。我通过更改桶中的出口订单来解决它。
基本服务文件:
// dependency.service.ts
@Injectable()
export class DependencyService { }
// dependant.service.ts
import { DependencyService } from '.';
@Injectable()
export class DependantService {
constructor(private dependency: DependencyService) { }
}
以下每桶导致错误:
// index.ts
export * from './dependant.service';
export * from './dependency.service';
关注其中一部分:
// index.ts
export * from './dependency.service';
export * from './dependant.service';
答案 3 :(得分:1)
有时是修复它的单一方法 - 手动描述参数。
static get parameters() { return [Http, IconConfiguror] }
constructor(private http:Http, private iconConfiguror:IconConfiguror) {
答案 4 :(得分:0)
当我在app.module.ts
中导入服务时使用了以下内容时,为我工作mainWindow = [NSApplication sharedApplication].windows[0];
secondaryWindow = [[NSWindow alloc]init];
[secondaryWindow setFrame:mainWindow.frame display:false];
// the below is what I'm not sure of - how to reference nib instead of storyboard?
NSStoryboard *mainStoryboard = [NSStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
NSViewController *vc = [mainStoryboard instantiateControllerWithIdentifier:@"BackViewController"];
[secondaryWindow setContentViewController:vc];
答案 5 :(得分:0)
我的问题是我是从一个基类继承的,我用@Injectable装饰了这个基类。继承类是应该具有@Injectable属性的类,而不是基类。似乎当编译器看到@Injectable attibute时,它会检查以确保可以注入构造函数中的所有属性。如果没有,那就是错误。我通过从该类中删除@Injectable attibute来解决它。