2016-11-01 1 views
0

Я использую this seed application, чтобы сузить ошибку, которая держит выскакивать (так отладки проще ...)Угловой 2 Ошибки: (SystemJS) не удается разрешить все параметры для члена: (?). (...)

я получаю эту ошибку при попытке добавить модель данных в мой общий модуль (в моем браузере консоли):

Error: (SystemJS) Can't resolve all parameters for Member: (?).(…) 

Member Class в вопросе:

import * as _ from 'lodash'; 
import { Injectable } from '@angular/core'; 

@Injectable() 
export class Member { 

    private id: string; 
    [key: string]: any; 

    constructor(private data?: any) { 
    if (data) { 
     this.id = data.id; 
     _.extend(this, data.attributes); 
    } 
    } 

} 

Мой SharedModule (Member Class не ссылается нигде на данный момент):

import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { FormsModule } from '@angular/forms'; 
import { RouterModule } from '@angular/router'; 

import { ToolbarComponent } from './toolbar/index'; 
import { NavbarComponent } from './navbar/index'; 
import { NameListService } from './name-list/index'; 

import { Member } from './models/member.model'; 

@NgModule({ 
    imports: [CommonModule, RouterModule], 
    declarations: [ToolbarComponent, NavbarComponent], 
    exports: [ToolbarComponent, NavbarComponent, 
    CommonModule, FormsModule, RouterModule] 
}) 
export class SharedModule { 
    static forRoot(): ModuleWithProviders { 
    return { 
     ngModule: SharedModule, 
     providers: [NameListService, Member] 
    }; 
    } 
} 

Когда я избавляюсь от конструктора в class Member ошибка исчезает:

import * as _ from 'lodash'; 
import { Injectable } from '@angular/core'; 

@Injectable() 
export class Member { 

    private id: string; 
    [key: string]: any; 

} 

Я не использую импорт баррель, как вы можете так как порядок импорта может привести к той же ошибке.

я немного застрял на том, как решить эту проблему ... Спасибо

+0

Что именно вы пытаетесь ввести в «Член»? Угловая не знает, что вы дарите, потому что нет никакого токена. И вы уверены, что действительно хотите сделать провайдера _model_? В чем смысл? –

+0

Возможно, посмотрите [этот пост] (http://stackoverflow.com/q/40259357/2587435) и/или [этот] (http://stackoverflow.com/q/40017679/2587435) –

+0

@peeskillet Извините, я не получаю ваш комментарий. 1) Я не пытаюсь вводить что-либо в 'Member'. Член должен просто служить моделью данных. Я хочу передать атрибуты json в конструктор. 2) Как еще я могу использовать класс в модели? Мне нужно предоставить его, чтобы иметь новый метод, нет? –

ответ

2

Если класс только для использования в качестве модели, то не добавляйте его в @NgModule.providers и не пытаться вводить Это. Просто импортировать класс в файл класса, где вам это нужно, и просто использовать его как любой другой обычный класс

import { Member } from './member.model'; 

@Component({}) 
class MyComponent { 
    member = new Member(); 
} 

Смотрите также:

2

классов с декодером @Injectable() получают экземпляр, однажды созданный Angular в качестве поставщиков услуг. Угловое использование отражения/типа намекает, чтобы предоставить экземпляру свою зависимость.

Угловой не знает, что дать свой конструктор класса Member, так как его тип определяется как any.

Смежные вопросы