[解決済み] Angular 2 複数モジュール
質問
私は、1つはスプレッドシートのような複数のビューを持っているアプリを持っています; 他の2つのパネルビューは、両方のビューのためのナビゲーション、検索、およびフィルタが共通になります。そこで、共通モジュールを追加し、そのモジュールをメインモジュールにインポートしました。以下は、適切な画像を提供する私のコードです。
// Spreadsheet module - spreadsheet.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { Spreadsheet } from './components/spreadsheet.component';
@NgModule({
imports: [ BrowserModule ],
declarations: [ Spreadsheet ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class SpreadsheetModule { }
// Common module - common.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { TopNavigation } from './components/header.component';
import { Search } from './components/search.component';
import { AccountInfo } from './services/accountInfo';
@NgModule({
imports: [ BrowserModule ],
declarations: [ TopNavigation, Search ],
providers: [ AccountInfo ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class CommonModule {}
今、この2つのモジュールを1つのメインモジュールにインポートしているところです。
// App module - app.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { CommonModule } from './common/common.module';
import { SpreadsheetModule } from './spreadsheet/spreadsheet.module';
@NgModule({
imports: [ BrowserModule, CommonModule, SpreadsheetModule ],
declarations: [ AppComponent ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
そこで、スプレッドシートのコンポーネントで、ヘッダーの(
TopNavigation
のようなテンプレートがあります。
<top-nav></top-nav>
ということで、header.htmlの内容が表示されるはずなのですが、空白になってしまっています。エラーも出ていません。何が間違っているのかよくわかりません。
注:もし私が直接
TopNavigation
で
spreadsheet.module.ts
で問題なく動作します。しかし、ナビゲーションと検索は共通なので、モジュールごとに宣言する必要はありません。
app.module.ts
どうすればいいですか?
ここでは、2つのことを行う必要があります。
まず、エクスポートします。
TopNavigation
&です。
Search
コンポーネントを CommonModule から取得し、他のモジュールで使用できるようにします。
// Common module - common.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { TopNavigation } from './components/header.component';
import { Search } from './components/search.component';
@NgModule({
imports: [ BrowserModule ],
declarations: [ TopNavigation, Search ],
exports: [ TopNavigation, Search ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class CommonModule {}
次に
CommonModule
は、それを実際に使用するモジュールによってインポートされる必要があります。あなたの場合
SpreadSheet
をインポートする必要があります。
CommonModule
// Spreadsheet module - spreadsheet.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { Spreadsheet } from './components/spreadsheet.component';
import { CommonModule } from './common/common.module';
@NgModule({
imports: [ BrowserModule, CommonModule],
declarations: [ Spreadsheet ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class SpreadsheetModule { }
モジュールは、他のモジュールで宣言されているコンポーネントを継承しません。そのため
CommonModule
で
AppModule
を指定しても、何の効果もありません。
を読むことができます。 こちら をご覧ください。
関連
-
[解決済み] Angular 2で簡単なアコーディオンを作成するにはどうすればよいですか?
-
[解決済み] NullInjectorError: MatDialogRef 用のプロバイダがありません
-
[解決済み] Typescript - コードが TS1128: Declaration or Statement expected というエラーでビルドに失敗するが、コードを提供すると期待通りに実行される。
-
[解決済み] Angular CLIでピア依存をインストールする場合の対処方法は?
-
[解決済み] CLIでコンポーネントを削除する最も良い方法は何ですか?
-
[解決済み] Angular2の$document.ready()に相当します。
-
[解決済み] Angular 2の「コンポーネント」は既知の要素ではありません。
-
[解決済み] Angular InjectionTokenが「No provider for InjectionToken」をスローします。
-
[解決済み] Angularアプリのシンタックスエラー。予期しないトークン <
-
[解決済み] Angular2の素材ダイアログに問題あり - @NgModule.entryComponentsに追加しましたか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VSCodeはモジュール'@angular/core'や他のモジュールを見つけることができません。
-
[解決済み】エラー。どのルートにもマッチしません。URLセグメント: - Angular 2
-
[解決済み] 型 '{}' は型 '{ title: string; text: string; }' に代入できません。
-
[解決済み] NullInjectorError: MatDialogRef 用のプロバイダがありません
-
[解決済み] イオン4オブザーバブル
-
[解決済み] AngularのmatSortがソートされない
-
[解決済み] ReferenceError: localStorageが定義されていません。
-
[解決済み] 安全でない値」の例外を発生させずに <iframe src="..."> を設定するにはどうしたらよいですか?
-
[解決済み] ローカルのワークスペース・ファイル('angular.json')が見つかりませんでした。しかし、同じコードが別のコンピュータで動作します
-
[解決済み] モジュール "ionic-native" が見つかりません。