【问题标题】:Unable to use service无法使用服务
【发布时间】:2017-02-21 07:07:43
【问题描述】:

我创建了通过社交网络登录的服务, 我的问题是我在尝试使用它时遇到错误。 我的主要组件是:

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 例外:未捕获(在承诺中):错误:./Login 类 Login_Host 中的错误 - 内联模板:0:0 原因:没有 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 原始堆栈跟踪: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 错误:未捕获(承诺中):错误:./Login 类 Login_Host 中的错误 - 内联模板:0:0 原因:没有 UserData 提供者!

【问题讨论】:

    标签: javascript angular angular2-services


    【解决方案1】:

    错误信息说明了一切:No provider for UserData!

    您需要使用providers 数组在您的app.module.tsprovide UserData 服务,如下所示:

    @NgModule({
        imports: [
            BrowserModule,
        ],
        declarations: [
            AppComponent
        ],
        providers: [
            UserData
        ],
        bootstrap: [AppComponent]
    })
    export class AppModule { }
    

    【讨论】:

      【解决方案2】:

      您是否在 NgModule 中将 UserData 注册到 providers 数组中?

      【讨论】:

        猜你喜欢
        • 2014-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多