Есть ли способ предоставления @Injectable
s в качестве компонентов для загрузки одиночных пакетов с использованием loadChildren
(ленивые компоненты загрузки)?Angular2: ленивые загрузочные компоненты и инъецируемые материалы как одиночные литеры
Если нет, есть ли способ получить его?
Я прошу об этом this post. В соответствии с этим невозможно ввести @Injectable
в виде синглетонов на подмодулях.
Я пытаюсь привнести в @Injectable AppState
как одноточечный:
@Injectable()
export class AppState {
public user: string;
constructor() {
}
...
Я поставил его на AppModule
как provider
:
// Application wide providers
const APP_PROVIDERS = [
AppState
];
@NgModule({
bootstrap: [ App ],
declarations: [
App,
ErrorComponent
],
imports: [ // import Angular's modules
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot(ROUTES, { useHash: true })
],
providers: [
APP_PROVIDERS
]
})
export class AppModule {
constructor(public appRef: ApplicationRef, public appState: AppState) {}
}
Итак, я также создал "submodule"
:
@NgModule({
//...
providers: [ AppState ]
})
export default class LoginModule {
LoginComponent
я:
export class Login implements OnInit {
constructor(private appState: AppState) {}
public doLogin():void {
this.appState.user = this.form.value.mail;
}
}
Тем не менее, на другом компоненте имени Profile
, кажется, что this.appState.user
не определено.
@NgModule({
//...
providers: [ AppState ]
})
export default class ProfileModule { /... }
@Component({
//...
})
export class Profile implements OnInit {
constructor(private appState: AppState) {
}
ngOnInit():void {
this.user = this.appState.user; <<<<<<<<<<<<< it's undefined
}
}
Почему this.appState.user
является undifined если I'set его раньше в другом компоненте?
Не предоставляйте его на уровне вашей ленивой загрузки _modules_. Вы должны будете предоставить его на уровне 'app.module' (или если вы используете его в своем« core.module »). –
Что относительно [этого сообщения] (http://stackoverflow.com/a/40981772/217408)? – Jordi