Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2:的一个或多个提供者。。未定义:[?]_Angular - Fatal编程技术网

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

Angular2:的一个或多个提供者。。未定义:[?],angular,Angular,原始例外情况:“AddressPage”的一个或多个提供程序为 未定义:[?] 我认为我的代码是可靠的: @Injectable() export class NavService { .. } import {NavService} from '../../../providers/services/nav-service/nav-service'; @Component({ templateUrl: 'build/pages/transaction/address/addr

原始例外情况:“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 { .. }
然而我看到了这个错误,这到底意味着什么?在另一个看起来类似的组件中,我导入服务没有问题。此外,我的服务测试运行良好。我已经调试了几个小时了,非常感谢您的帮助

更新

独自创立 调试完成 我交换了两个组件文件(非工作和工作)的源代码,但仍然收到
[?]提供程序未定义的错误。所以问题一定出在文件之外的某个地方

这是在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)
console.log(“Casted”,下一个引导)

…但它无法转换为函数。

因此,很难识别prbm。向我们展示引导功能,几乎需要服务n组件的代码。OK更新。奇怪的是它在其他组件中工作。我也经历过这种情况,这是因为循环依赖关系。
console.log ("Casted", <AddressPage>nextPageString)