2016-09-05 2 views
1

у меня есть что-то вроде этого:инъекционных параметров в модуле бутстраповской

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ LoaderComponent ], 
    bootstrap: [ LoaderComponent ], 
}) 
export class AppModule { 
    constructor(private params : BootstrapParams ) { 
    } 
} 

export class BootstrapParams { 
    public urlParam : String; 
    constructor(screenUrl : String) { 
     this.urlParam = screenUrl 
    } 
} 

и от моего main.ts у меня есть:

export function main(screenUrl) { 
    platformBrowserDynamic().bootstrapModule(AppModule, {providers: [ { provide : BootstrapParams, useFactory:() => new BootstrapParams("/bla/bla") }]}); 
} 

Но это бросает

"Can't resolve all parameters for AppModule: (?).(…)" 

и Я не понимаю, что я делаю неправильно, я прочитал всю документацию, но не так много примеров передачи данных в корневой модуль ле.

ответ

0

Хорошо, я отвечаю на себя, проблема заключается в том, чтобы объявить BootstrapParams в том же файле, что и AppModule. Он может быть в том же файле, но он должен быть объявлен ранее. Нравится:

export class BootstrapParams { 
    public urlParam : String; 
    constructor(screenUrl : String) { 
     this.urlParam = screenUrl 
    } 
} 

@NgModule({ 
    imports: [ BrowserModule ], 
    declarations: [ LoaderComponent ], 
    bootstrap: [ LoaderComponent ], 
    providers: [ { provide : BootstrapParams, useFactory:() => new BootstrapParams("/bla/bla") }] 

}) 
export class AppModule { 
    constructor(private params : BootstrapParams ) { 
    } 
} 
+0

Что вы имели до этого, 'BootstrapParams' имеют после' AppModule'? Проблема, похоже, похожа на [этот вопрос] (http://stackoverflow.com/q/34838804/2435473) –

+0

да, точно такая же проблема. Спасибо за вашу помощь! – lqbweb

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