原始例外:" AddressPage"的一个或多个提供商是 未定义:[?]。
我认为我的代码很健全:
@Injectable()
export class NavService { .. }
import {NavService} from '../../../providers/services/nav-service/nav-service';
@Component({
templateUrl: 'build/pages/transaction/address/address.html',
providers: [NavService]
})
export class AddressPage { .. }
然而,我看到这个错误,这是什么意思?在另一个看起来相似的组件中,我没有导入服务的麻烦。我对服务的测试运行良好。我现在正在调试这几个小时,感谢任何帮助。
更新
ionicBootstrap(MyApp, [
GoalService,
provide(TranslateLoader, {
useFactory: (http: Http) => new TranslateStaticLoader(http, 'assets/i18n', '.json'),
deps: [Http]
}), TranslateService,
provide(AuthHttp, {
useFactory: (http) => {
return new AuthHttp (
new AuthConfig(),
http
)
},
deps: [Http]
}), AuthService,
NavService
])
我交换了我的两个组件文件的源代码(非工作和工作),但仍然收到[?] Provider not defined
错误。所以问题必须在某处的文件之外。
这是在Angular2源中抛出错误的函数:
@@ -124,6 +125,10 @@ export class CompileMetadataResolver {
verifyNonBlankProviders(directiveType, dirMeta.viewProviders, 'viewProviders'));
}
moduleUrl = componentModuleUrl(this._reflector, directiveType, cmpMeta);
+ if (cmpMeta.precompile) {
+ precompileTypes = flattenArray(cmpMeta.precompile)
+ .map((cmp) => this.getTypeMetadata(cmp, staticTypeModuleUrl(cmp)));
+ }
}
var providers: any[] /** TODO #9100 */ = [];
好的 - 这就是问题:我通过navController推送到我服务中的下一页,但是"下一页"需要非常服务作为依赖/提供者,这是不可能的,因为它是循环依赖。我需要一个干净的解决方案 - 我们有最好的做法吗?
投射字符串" MyNextPage"输入" MyNextPage" ?我试过
console.log ("Casted", <AddressPage>nextPageString)
..但它无法转换为函数。