私は角に問題があります。Angular2サービスインスタンスはAUXルート間で共有されませんか?
<!-- Navigation -->
<nav *ngIf="authService.loggedIn" id="navigation">
<iq-navigation></iq-navigation>
</nav>
<!-- Master View -->
<div *ngIf="authService.loggedIn" id="master" [iqResizable]="['right']" [minSize]="250">
<router-outlet name="master"></router-outlet>
</div>
<!-- Detail View -->
<div id="detail">
<!-- Detail Header -->
<div id="detail-header">
<router-outlet name="detail-header"></router-outlet>
</div>
<!-- Detail Main -->
<div id="detail-main">
<router-outlet></router-outlet>
</div>
<!-- Detail Bottom -->
<div *ngIf="authService.loggedIn" id="detail-bottom" [iqResizable]="['top']">
<router-outlet name="detail-bottom"></router-outlet>
</div>
</div>
機能モジュールのルートが
に設定されているAPP-:
const routes: Routes = [
{
path: '',
children: [
{ path: '', component: CanvasComponent },
{ path: '', component: ControlsComponent, outlet: 'master' },
{ path: '', component: ToolbarComponent, outlet: 'detail-header' },
{ path: '', component: ConsoleComponent, outlet: 'detail-bottom' },
]
}];
コンセントがapp.component.htmlで宣言されています。私は、そのルーティングの設定次のようになります機能モジュールを持っています
const routes: Routes = [
{
path: '',
redirectTo: '/flow',
pathMatch: 'full'
},
{
path: 'flow',
canActivate: [AuthGuard],
loadChildren: 'app/flow/flow.module#FlowModule'
},
{
path: 'data',
canActivate: [AuthGuard],
loadChildren: 'app/data-manager/data-manager.module#DataManagerModule' },
{
path: 'login',
loadChildren: 'app/login/login.module#LoginModule'
},];
今キャンバスコンポーネントとの両方:このようなrouting.module コントロールコンポーネントはサービスを注入していますが、それぞれ独自のインスタンスを取得しています。
私は、各モジュール(特に、このフィーチャモジュールに遅延読み込みが行われるため)に独自のルートインジェクタがあり、それがルートインジェクタの子として追加されると考えました。しかし、各コンセントの各ルートコンポーネントは、独自のルートインジェクタ(各自が私のEditorServiceを提供する)を取得し、共通の祖先を共有しないため、それぞれ独自のサービスインスタンスを取得するようです。
これは意図的ですか?私の場合、これは私のアーキテクチャ全体をねじ込みます。
ご協力いただきありがとうございます。
編集:ここ はEditorService
遅延ロードモジュールの定義(flow.module)@NgModule({
imports: [ ReactiveFormsModule, SharedModule, FlowRoutingModule ],
exports: [],
declarations: [
CanvasComponent,
ControlsComponent,
...
],
providers: [
EditorService,
....
]
})
回インスタンス化されますサービスであります
アプリモジュールの場合、何も気にしませんが、完全性のために:
@NgModule({
imports: [ BrowserModule, AppRoutingModule, CoreModule, SharedModule, LoginModule ],
exports: [],
declarations: [ AppComponent ],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule { }
マイソリューション まあギュンターにより示唆されるように、私は私のEditorService
を提供するように構成ModuleWithProvider
を返し、それが働くFlowModule.forRoot()
機能を実装しました。この動作が意図されているのであれば、私はまだ不思議です。それ以上の設定手順を必要とせずに最適な機能モジュールをロードするだけなので、また、他のすべてのフィーチャモジュールとサービス(これは上記のアーキテクチャのためにマスターとディテールアウトレットのコンポーネントなど)でこれを行う必要があります。
モジュールはどのように定義されていますか?完全なコードである必要はありません。 'entryComponents'、' providers'ビットだけです。 – yuxhuang
こんにちは、お返事ありがとうございます。私は情報で私の質問を編集しました。 – guenne