通常在设置Angular应用程序时,您可以在启动时设置所有模块,例如:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import {SpinnerModule} from './spinner/spinner.module';
import { OverrideOneComponent } from './override-one/override-one.component';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
@NgModule({
declarations: [
AppComponent,
OverrideOneComponent
],
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
SpinnerModule.forRoot({
animation: 'spin 1.5s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite',
smallSize: 16,
mediumSize: 40,
largeSize: 60
})
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
然后,在应用程序的整个生命周期内修复属性。是否可以在应用程序中间再次调用forRoot
,以便分配新值?
用例如下:我正在编写模块库,您可以使用forRoot
设置一些属性。最终用户通常在启动时设置它们。但为了展示不同的设置,我想制作一个演示页面,在那里我可以动态地更改模块的属性。所以我需要一种方法来重启"模块......可能吗?
编辑:在这种情况下,模块如下所示:
import {NgModule} from '@angular/core';
import { CommonModule } from '@angular/common';
import { SpinnerComponent } from './spinner/spinner.component';
import {SPINNER_CONSTANTS} from './constants';
import {SpinnerConstants} from './spinner-constants.interface';
@NgModule({
imports: [
CommonModule
],
exports: [
SpinnerComponent
],
declarations: [
SpinnerComponent
]
})
export class SpinnerModule {
static forRoot(spinnerConstants: SpinnerConstants) {
return {
ngModule: SpinnerModule,
providers: [{
provide: SPINNER_CONSTANTS,
useValue: spinnerConstants
}]
};
}
}
答案 0 :(得分:0)
您无法再次呼叫forRoot
,但您可以将服务注入组件或其他服务及其上的所有方法或设置器,或访问字段以更新其状态。