我创建了通过社交网络登录的服务, 我的问题是我在尝试使用它时遇到错误。 我的主要组件是:
import {Component, ViewEncapsulation} from '@angular/core';
import {UserData} from '../../theme/services/userData';
@Component({
selector: 'login',
encapsulation: ViewEncapsulation.None,
styles: [require('./login.scss')],
template: require('./login.html'),
})
export class Login {
constructor(public _userData: UserData) {
}
login(form: string) {
this._userData.login(form);
}
服务:
import {Injectable} from '@angular/core';
import {AngularFire, AuthProviders} from 'angularfire2';
@Injectable()
export class UserData {
user = {};
isAuth = false;
constructor(public af: AngularFire) {
debugger;
this.af.auth.subscribe(user => this._changeState(user));
}
错误是:
error_handler.js:46 EXCEPTION: Uncaught (in promise): Error: Error in ./Login class Login_Host - inline template:0:0 caused by: No provider for UserData!ErrorHandler.handleError @ error_handler.js:46next @ application_ref.js:291schedulerFn @ async.js:89SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:81onError @ ng_zone.js:123onHandleError @ ng_zone_impl.js:65ZoneDelegate.handleError @ zone.js:207Zone.runGuarded @ zone.js:113_loop_1 @ zone.js:379drainMicroTaskQueue @ zone.js:386 error_handler.js:51 ORIGINAL STACKTRACE:ErrorHandler.handleError @ error_handler.js:51next @ application_ref.js:291schedulerFn @ async.js:89SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:81onError @ ng_zone.js:123onHandleError @ ng_zone_impl.js:65ZoneDelegate.handleError @ zone.js:207Zone.runGuarded @ zone.js:113_loop_1 @ zone.js:379drainMicroTaskQueue @ zone.js:386 error_handler.js:52 Error: Uncaught (in promise): Error: Error in ./Login class Login_Host - inline template:0:0 caused by: No provider for UserData!
最佳答案
错误消息说明了一切:没有 UserData 提供程序!
您需要使用 providers
数组在 app.module.ts
中提供
UserData
服务,像这样:
@NgModule({
imports: [
BrowserModule,
],
declarations: [
AppComponent
],
providers: [
UserData
],
bootstrap: [AppComponent]
})
export class AppModule { }
关于javascript - 无法使用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39999305/