当前位置:  开发笔记 > 编程语言 > 正文

Angular2"没有服务提供商!" 添加提供程序@NgModule时出错

如何解决《Angular2"没有服务提供商!"添加提供程序@NgModule时出错》经验,为你挑选了1个好方法。

我有一个应用程序模块和单个组件应用程序(用于演示我的问题),并收到以下错误:

 Error in ./AppComponent class AppComponent_Host - inline template:0:0 caused by: No provider for UserService! ; Zone:  ; Task: Promise.then ; Value:

AppModule的代码:

import { NgModule }       from '@angular/core';
import { BrowserModule }  from '@angular/platform-browser';
import { UserService } from './components/common/userservice';

@NgModule({
    imports: [
    BrowserModule,
],
declarations: [
    AppComponent
],
providers: [UserService],
bootstrap: [AppComponent],
entryComponents: []

})
export class AppModule {
}

我的AppComponent的代码:

import { Component} from '@angular/core';
import { UserService} from './userservice';

@Component({
  selector: 'App',
  template: `

App component

user name: {{userName}} `, providers: [] }) export class AppComponent { userName: string; constructor(userService: UserService) { this.userName = userService.userName; } }

我的用户服务代码:

import { Injectable, EventEmitter } from '@angular/core';
@Injectable()
export class UserService {
    obs$: EventEmitter = new EventEmitter()
    userName = 'Sherlock Holmes';
}

现在,如果我将UserService作为提供者添加到AppComponent,它将解决问题.但我不想,因为我只想在整个应用程序中使用我的服务的一个实例.即使在subModules(功能模块)中也是如此.

根据我的理解,如果我在模块级别添加服务作为提供者,那么我可以将它注入模块下的任何组件.

这是我正在观看的例子.

Plunker

我正在使用angular2版本:"2.0.0"



1> msanford..:

导入路径错误:您/Common/common下面的一个和右下方使用.

对于路径的区分大小写,Visual Studio和WebStorm不会显示IntelliSense错误.

此外,如果使用Angular 5的AoT模板编译,您可以获得"此组件不是模块的一部分"错误,即使它是,因为导入路径不正确.如果没有AoT,这将有效,因此转换为AoT时会有惊喜.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有