2016-10-01 69 views
1

我升级到了Angular 2的发布版本,我试图使用ElementRef。起初,我得到了错误Angular2 RC5 error:zone.js: Unhandled Promise rejection: No provider for ElementRef为指定的位置:Angular2 RC5 error:zone.js: Unhandled Promise rejection: No provider for ElementRef所以我改变了我的代码:Angular 2发布“意外值'ElementRef'由模块导入”

import { NgModule, CUSTOM_ELEMENTS_SCHEMA, ElementRef }  from '@angular/core'; 
@NgModule({ 
    declarations: [DashboardComponent, WidgetBankComponent, DataTableDirectives, OrderBy], 
    exports: [DashboardComponent, WidgetBankComponent], 
    imports: [BrowserModule, HttpModule, FormsModule, ChartsModule, ElementRef], 
    providers: [ChartService, GridService, WidgetsControlService, GridViewService, ApplicationSettingsService, DataService, ToolsService, LocalStorageService, RuntimeCompiler, COMPILER_PROVIDERS, NgGrid, NgGridItem], 
    schemas: [CUSTOM_ELEMENTS_SCHEMA] 
}) 

,现在我得到的错误(SystemJS) Unexpected value 'ElementRef' imported by the module 'DashboardModule'

什么想法?

预先感谢您!

编辑

难道在下面的答案建议的修复,现在有这样的错误 - 这里是完整的错误 - 有没有办法知道,我需要从这个错误中供应商?

zone.js:355 Unhandled Promise rejection: No provider for ElementRef! ; Zone: <root> ; Task: Promise.then ; Value: NoProviderError {_nativeError: Error: No provider for ElementRef! 
    at NoProviderError.Error (native) 
    at NoProviderError.Base…, keys: Array[1], injectors: Array[1]}_nativeError: Error: No provider for ElementRef! 
    at NoProviderError.Error (native) 
    at NoProviderError.BaseError [as constructor] (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:1248:38) 
    at NoProviderError.AbstractProviderError [as constructor] (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:1703:20) 
    at new NoProviderError (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:1734:20) 
    at ReflectiveInjector_._throwOrNull (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3331:23) 
    at ReflectiveInjector_._getByKeyDefault (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3359:29) 
    at ReflectiveInjector_._getByKey (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3322:29) 
    at ReflectiveInjector_.get (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3131:25) 
    at NgModuleInjector.AppModuleInjector.createInternal (AppModule.ngfactory.js:310:75) 
    at NgModuleInjector.create (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:7192:80)constructResolvingMessage: (keys)injectors: Array[1]keys: Array[1]message: (...)name: (...)stack: (...)__proto__: AbstractProviderError Error: No provider for ElementRef! 
    at NoProviderError.Error (native) 
    at NoProviderError.BaseError [as constructor] (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:1248:38) 
    at NoProviderError.AbstractProviderError [as constructor] (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:1703:20) 
    at new NoProviderError (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:1734:20) 
    at ReflectiveInjector_._throwOrNull (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3331:23) 
    at ReflectiveInjector_._getByKeyDefault (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3359:29) 
    at ReflectiveInjector_._getByKey (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3322:29) 
    at ReflectiveInjector_.get (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:3131:25) 
    at NgModuleInjector.AppModuleInjector.createInternal (AppModule.ngfactory.js:310:75) 
    at NgModuleInjector.create (http://localhost:56159/node_modules/@angular/core//bundles/core.umd.js:7192:80)consoleError @ zone.js:355_loop_1 @ zone.js:382drainMicroTaskQueue @ zone.js:386ZoneTask.invoke @ zone.js:308 
zone.js:357 Error: Uncaught (in promise): Error: No provider for ElementRef!(…)consoleError @ zone.js:357_loop_1 @ zone.js:382drainMicroTaskQueue @ zone.js:386ZoneTask.invoke @ zone.js:308 
+0

这angular2的版本,您使用的? – micronyks

+0

最终版本 – blubberbo

+0

其奇怪!它应该工作。最终版本中使用哪个zone.js版本? – micronyks

回答

0

使用它在个别组件级别在你需要它。

import { ElementRef } from '@angular/core'; 
@Component({ 
.... 
}) 
export class DashboardComponent{ 
    constructor(private el:ElementRef){} 
} 
+0

然后我得到'zone.js:355未处理的Promise拒绝:没有ElementRef的提供者! ;区域:;任务:Promise.then;值:NoProviderError' ...这导致我相信我在某处引用它,但我不知道如何找出位置。它可能是我拥有的一个插件,所以我想尝试添加它作为所有插件的提供者 – blubberbo

+0

从'imports'中移除'ElementRef'并按照我所说的去做。 – micronyks

+0

我从导入中删除了它,并且像你说的那样将它添加到了组件中,现在我得到了'没有提供程序...' – blubberbo

1

尝试从imports阵列删除ElementRef并将其粘贴到的providers数组:

import { NgModule, CUSTOM_ELEMENTS_SCHEMA, ElementRef } from '@angular/core'; 
@NgModule({ 
    declarations: [DashboardComponent, WidgetBankComponent, DataTableDirectives, OrderBy], 
    exports: [DashboardComponent, WidgetBankComponent], 
    imports: [BrowserModule, HttpModule, FormsModule, ChartsModule], 
    providers: [ChartService, GridService, WidgetsControlService, GridViewService, ApplicationSettingsService, DataService, ToolsService, LocalStorageService, RuntimeCompiler, COMPILER_PROVIDERS, NgGrid, NgGridItem, ElementRef], 
    schemas: [CUSTOM_ELEMENTS_SCHEMA] 
}) 
+0

创建了与原始发布相同的错误:( – blubberbo

+0

@blubberbo,您从根项目文件夹运行'tsc'? – ktretyak

+0

这是正确的 – blubberbo

相关问题