我正在尝试将服务注入我的angular 2应用程序的根模块。
服务如下:
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;
}
}
目前显然非常简单,但我只是想让它发挥作用
然后我尝试将其声明为我的根模块中的提供者,然后我在装饰器的bootstrap集合中得到它:
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: (?)
关于为什么这不起作用的任何想法?我尝试了很多实现
答案 0 :(得分:1)
从-b C:\..\A\A.WindowsService\bin\Release
部分删除该服务。将它放在bootstrap
部分就足以使服务可用作单身人士。
同时将其从任何providers
装饰器中删除。
答案 1 :(得分:1)
正如angular docs中指出的那样
应禁止在组件中使用providers
数组,并在下一个rc中将其删除。
@Component({
selector: 'app',
templateUrl: './app.template.html' //<-- removed providers array
})
在app.module
的提供者数组中包含您的服务将全局声明(您已经完成),如providers section中所述
进行以下更改:
bootstrap: [ AppComponent]` //<---UserService removed
确保从正确的目录导入服务。