2017-05-07 12 views
-1

私はAngular 2で基本的なアプリケーションを構築しましたが、モジュールを通して自分のコンポーネントの1つにサービスを注入することはできません。角2 DI - すべてのパラメータを解決できません

のWebPACKでコンパイルした後、私はこの次のエラーを取得: "角2 DIは - すべてのパラメータを解決できません"

// UserModule 
import {NgModule} from '@angular/core'; 
import {CommonModule} from '@angular/common'; 
import {UserService} from "../services/user.service"; 
import {UserComponent} from "./user.component"; 

@NgModule({ 
    imports: [ 
     CommonModule 
    ], 
    declarations: [ 
     UserComponent 
    ], 
    exports: [UserComponent], 
    providers: [UserService] 
}) 
export class UserModule {} 
ブラウザのコンソールからである
// UserComponent 
import {Component, Inject} from '@angular/core'; 
import {UserService, IUser} from "../services/user.service"; 
import {FormGroup, ReactiveFormsModule} from "@angular/forms"; 

@Component({ 
    templateUrl: './user.component.html', 
    styleUrls: ['./user.component.css'] 
}) 

export class UserComponent { 
    user: IUser[] = []; 

    // constructor(private userService: UserService) { 
    // does not work too 
    constructor(@Inject(UserService) private userService: UserService) { 
     this.user = this.userService.get({id: 1}); 
    } 
} 
// UserService 
import {Injectable} from '@angular/core'; 
import {RequestMethod} from '@angular/http'; 

import {ResourceMethod} from 'ngx-resource/src/Interfaces'; 
import {ResourceAction, ResourceParams} from 'ng2-resource-rest'; 
import {RestClient} from '../shared/rest-client'; 

interface IQueryInput { 
    id: number; 
} 

export interface IUser { 
    id: number; 
    name: string; 
    description: string; 
    user_content: IUserContent[]; 
} 

export interface IUserContent { 
    url: string; 
    type: string; 
    title: string; 
} 

@Injectable() 
@ResourceParams({ 
    url: 'users' 
}) 
export class UserService extends RestClient { 
    @ResourceAction({ 
     path: '/', 
     isArray: true 
    }) 
    query: ResourceMethod<IQueryInput, IUser[]>; 

    @ResourceAction({ 
     path: '/{!id}' 
    }) 
    get: ResourceMethod<{id: any}, IUser[]>; 
} 

Uncaught Error: Can't resolve all parameters for UserService: (?, ?). 
    at syntaxError (http://127.0.0.1:8000/vendor.bundle.js:41458:34) [<root>] 
    at CompileMetadataResolver._getDependenciesMetadata (http://127.0.0.1:8000/vendor.bundle.js:54735:35) [<root>] 
    at CompileMetadataResolver._getTypeMetadata (http://127.0.0.1:8000/vendor.bundle.js:54603:26) [<root>] 
    at CompileMetadataResolver._getInjectableMetadata (http://127.0.0.1:8000/vendor.bundle.js:54589:21) [<root>] 
    at CompileMetadataResolver.getProviderMetadata (http://127.0.0.1:8000/vendor.bundle.js:54878:40) [<root>] 
    at http://127.0.0.1:8000/vendor.bundle.js:54808:49 [<root>] 
    at Array.forEach (native) [<root>] 
    at CompileMetadataResolver._getProvidersMetadata (http://127.0.0.1:8000/vendor.bundle.js:54769:19) [<root>] 
    at CompileMetadataResolver.getNgModuleMetadata (http://127.0.0.1:8000/vendor.bundle.js:54424:50) [<root>] 
    at CompileMetadataResolver.getNgModuleSummary (http://127.0.0.1:8000/vendor.bundle.js:54277:52) [<root>] 
    at http://127.0.0.1:8000/vendor.bundle.js:54350:72 [<root>] 
    at Array.forEach (native) [<root>] 
    at CompileMetadataResolver.getNgModuleMetadata (http://127.0.0.1:8000/vendor.bundle.js:54335:49) [<root>] 
    at JitCompiler._loadModules (http://127.0.0.1:8000/vendor.bundle.js:65516:64) [<root>] 
+1

理由(@Inject(CampaignServiceの)プライベートUserServiceのを試してみたいことがあります。あなたが直接サービスを利用することができ、このレポをチェックし、サービスを利用しての情報についてUserServiceの(@Inject(CampaignServiceの)private userService:UserService –

+1

あなたのイベントの中に 'UserService'クラスがありません。 – echonax

+0

私はそれを直接使用しようとしましたが、同じエラーが発生しました。 – user2588688

答えて

0

私はResourceModule.forRootを追加する必要があると思います)をあなたの輸入品に加えます。

Typescriptを使用している場合は@Inject()を削除する必要があります。

IMO、あなたの問題は、ngx-resourceを正しく使用する方法によく似ています。

あなたはそれらの例最初

https://github.com/troyanskiy/ngx-resource

関連する問題