Angular 将服务注入根模块
我正在尝试将服务注入angular 2应用程序的根模块 该服务如下所示:Angular 将服务注入根模块,angular,dependency-injection,Angular,Dependency Injection,我正在尝试将服务注入angular 2应用程序的根模块 该服务如下所示: import { Injectable } from '@angular/core'; @Injectable() export class UserService { loggedIn : boolean = false; username : string = "Test"; password : string = ""; constructor( ) { }
import { Injectable } from '@angular/core';
@Injectable()
export class UserService {
loggedIn : boolean = false;
username : string = "Test";
password : string = "";
constructor( ) {
}
login ( username : string, password : string ) {
this.loggedIn = true;
return this.loggedIn;
}
logout ( ) {
this.loggedIn = false;
}
getUsername ( ) {
return this.username;
}
}
这显然是相当简单的时刻,但我只是想让它的工作
然后我试图在我的根模块中将它声明为提供者,然后我在decorator的引导集合中也得到了它:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { routing, appRoutingProviders } from './app.routing';
import { LoginModule } from './login/login.module';
import { UserModule } from './user/user.module';
import { NavbarModule } from './navbar/navbar.module';
import { UserService } from './services/user.service';
import { AppComponent } from './app.component';
@NgModule({
declarations: [ AppComponent ],
imports: [ BrowserModule, routing, NavbarModule, UserModule, LoginModule],
providers: [ appRoutingProviders, UserService ],
bootstrap: [ AppComponent, UserService ]
})
export class AppModule {
}
然后我尝试像这样在appComponent中使用此服务
import { Component } from '@angular/core';
import { UserService } from './services/user.service';
@Component({
selector: 'app',
providers: [ UserService ],
templateUrl: './app.template.html'
})
export class AppComponent {
constructor ( private userService: UserService ) {
console.log( userService.getUsername() );
}
}
然后在运行应用程序时出现此错误
Can't resolve all parameters for AppComponent: (?)
你知道为什么这行不通吗?我尝试了很多实现从
引导
部分删除该服务。将其放在提供者
部分就足以使服务作为一个单独的服务提供。
还可以将其从任何@Component()
装饰程序中删除。如中所述
应禁止在组件中使用提供程序
数组,并将在下一次rc中删除
@Component({
selector: 'app',
templateUrl: './app.template.html' //<-- removed providers array
})
确保从正确的目录导入服务。尝试删除AppComponent中的
提供程序数组。此外,您还需要在AppModuler的引导数组中包含UserService
。删除providers数组会导致相同的错误。此外,我已经在引导阵列中包含UserService?=>引导:[AppComponent,UserService]@candidJok,因此从引导阵列中删除它会产生相同的错误。我还从所有组件装饰器中删除了它,并且再次删除了它。我觉得我在这里遗漏了一些东西,因为这正是我在阅读的所有材料中看到的实现。您应该只在@NgModule的providers部分拥有它。我只是在尝试扩展可注入类时遇到了这个错误。但你似乎不想这么做。
bootstrap: [ AppComponent]` //<---UserService removed