【发布时间】:2016-06-06 04:06:15
【问题描述】:
即使在 bootstrap(app, [providers]) 方法中引导 FirebaseService 之后,我也会收到 No Provider for FirebaseService 错误。
我关注了Pascal's guide for injecting a service within a service,当我用HTTP_PROVIDERS 引导注入Http 服务时它工作了,但是在将其更改为我自己的服务后我收到No providers for FirebaseService 错误。
我可以通过删除FirebaseService 的注入来单独注入两个提供程序。
即使我这样做contructor(@Inject(FirebaseService) firebase: FirebaseService){} 也行不通,但我的理解是添加@Injectable() 装饰器应该具有相同的效果。
login-page.ts
import {Component} from '@angular/core';
import {UserService} from '../../Services/user.service';
import {FirebaseService} from '../../services/firebase.service';
import { UserModel } from '../../export';
@Component({
moduleId: 'app/PAGES/login-page/',
selector: 'login-page',
templateUrl: 'login-page.html',
styleUrls: ['login-page.css'],
providers: [ UserService]
})
export class LoginPage {
constructor(private userService: UserService) {}
user:UserModel = new UserModel();
hello: string = "You got yourself a login page, sir";
dostuff() {
console.log(this.user);
// this.userService.createUser(this.user);
}
}
main.ts
import { bootstrap } from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';
import { FirebaseService } from './SERVICES/firebase.service';
bootstrap(AppComponent, [
FirebaseService
]);
用户服务
import { Injectable, Inject } from '@angular/core';
import {FirebaseService} from './firebase.service';
import { UserModel } from '../export';
@Injectable()
export class UserService {
constructor(private firebaseService: FirebaseService ) {}
public createUser(user: UserModel): any {
console.log(user);
// this.firebaseService.set(user)
}
public getUser(username: string): any {
// return this.firebaseService.get("users/" + username);
}
}
FirebaseService
@Injectable()
export class FirebaseService {
public get(path: string): any {
console.log(path);
}
public set(objectToSave: any) {
console.log(objectToSave);
}
}
【问题讨论】:
-
供参考,完整的存储库在这里:github.com/ChuckkNorris/Ng2RcTest