Angular2:未定义一个或多个..的提供者:[?]

时间:2016-07-10 22:53:14

标签: angular

  

原始例外:" 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)

..但它无法转换为函数。

0 个答案:

没有答案