2017-02-22 8 views
1

他にも1つのサービスがあります。コントローラでインポートしようとすると、このエラーが発生しました:areq fnはUserRepositoryを持った関数ではありません。私は自分の問題が正しい方法でこのサービスを注入していると思う。ng:areq fnは関数を持っていませんobjectService angularjs es6

import { HelloComponent } from './hello/hello.component'; 
import { UserRepository } from '../core/repository/user/user.repository'; 

const greetingModule = angular 
        .module('app.greeting',[]) 
        .component('helloComponent', new HelloComponent) 
        .service('UserRepository', new UserRepository) 
        .name; 

export { greetingModule }; 

と私のコントローラ::

import { UserRepository } from '../../core/repository/user/user.repository'; 

class HelloController { 
    constructor(UserRepository) { 
     this.hello = 'Hello World'; 
     this.service = UserRepository; 
    } 

    getAll() { 
     console.log('user Repository', this.service) 
    } 
} 
HelloController.$inject = ['UserRepository']; 
export { HelloController }; 

答えて

0
.service('UserRepository', new UserRepository) 

​​はあなたがオブジェクトを渡し、機能を期待

import { USER_REPO_CONFIG } from '../repository.config'; 
import { AbstractRepository } from '../abstract.repository'; 
import { UserModel } from './user.model'; 

import 'rxjs/add/operator/map'; 

class UserRepository extends AbstractRepository { 
    constructor($http) { 
     'NgInject' 
     super($http, USER_REPO_CONFIG, UserModel); 
    } 

    /** 
    * Gets the user by ID 
    * 
    * @param {number} userId - ID of a user to find 
    * @returns {Observable<UserModel>} - User model instance 
    */ 
    getUser(userId) { 
     return this.getItem(userId); 
    } 

    /** 
    * Creates the user 
    * 
    * @param {UserModel} user - User model instance 
    * @returns {Observable<UserModel>} - User model instance observable 
    */ 
    createUser(user) { 
     return this.createItem(user); 
    } 

    /** 
    * Updates the user 
    * 
    * @param {number} userId - ID of a user to update 
    * @param {UserModel} user - User model instance 
    * @returns {Observable<UserModel>} - User model instance observable 
    */ 
    updateUser(userId, user) { 
     return this.updateItem(userId, user); 
    } 
} 

export { UserRepository }; 

はここに私のモジュールである:ここに私のサービスです。クラスを直接渡すことができます。

.service('UserRepository', UserRepository) 

クラスを渡すと、コンストラクター関数が実際に渡されます。

関連する問題