角度材からモジュールをインポートするのを避けるため、別の角度モジュールAppCustomMaterialModule
を作成し、メインモジュールAppModule
にインポートしました。そのメインモジュールのコンポーネント(AppMenuComponent
)は、エクスポートされた角度材料モジュールの1つを使用する必要があります。ただしAppCustomMaterialModule
はAppModule
にインポートされますが、AppMenuComponent
には見つかりません。直接輸入が可能です。エラーメッセージ: Module ...app-custom-material-module/app-custom-material.module' has no exported member 'MatMenuTrigger'
AppCustomMaterialModule
を意図どおりに使用するには何が必要ですか?角度材用の個別モジュール
構造:
|____app
| |____app.component.html
| |____app.component.ts
| |____app.component.spec.ts
| |____app.module.ts
| |____app-custom-material-module
| | |____app-custom-material.module.ts
| |____app-menu
| | |____app-menu.component.html
| | |____app-menu.component.spec.ts
| | |____app-menu.component.css
| | |____app-menu.component.ts
AppCustomMaterialModule:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatButtonModule, MatCheckboxModule, MatMenuModule, MatMenuTrigger } from '@angular/material';
@NgModule({
imports: [
CommonModule,
MatButtonModule,
MatCheckboxModule,
MatMenuModule,
MatMenuTrigger
],
exports: [
MatButtonModule,
MatCheckboxModule,
MatMenuModule,
MatMenuTrigger
],
declarations: []
})
export class AppCustomMaterialModule { }
メインモジュール "AppModule":
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppCustomMaterialModule } from './app-custom-material-module/app-custom-material.module';
import { AppMenuComponent } from './app-menu/app-menu.component';
@NgModule({
declarations: [
AppComponent,
AppMenuComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AppCustomMaterialModule
],
exports: [],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
成分 "AppMenuComponent":
import { Component, OnInit, ViewChild, ViewChildren } from '@angular/core';
// import { MatMenuTrigger } from "@angular/material/menu"; <== direct import works
import { MatMenuTrigger } from '../app-custom-material-module/app-custom-material.module';
@Component({
selector: 'app-menu',
templateUrl: './app-menu.component.html',
styleUrls: ['./app-menu.component.css']
})
export class AppMenuComponent implements OnInit {
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
constructor() { }
ngOnInit() {
}
}
その説明をありがとう。私はそれが[Angular Bootstrapping - Imports Array](https://angular.io/guide/bootstrapping)にも記載されていると思います。しかし、[はじめに - ステップ3:コンポーネントモジュールのインポート](https://material.angular.io/guide/getting-started)で説明したように、私はすべてのインポートステートメントを避けたいと思います。だから私のコンポーネントでは、必要なすべてのクラスをインポートすることを避けたいと思います。それはできないだろうか?そうでない場合は、角度のある素材の開始セクションでそのセクションの意図は何ですか?私はその部分を誤解しているかもしれません。 – Mfried
いいえ、私が知っている限り、import * statements *をスキップすることはできません。リンクしたステップ3を読むと、インポート*ステートメント*ではなくimports *配列*が明確に示されます。 Import *ステートメント*は、JavaScriptの機能です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import – DeborahK
)。あなたの助けをありがとう!あなたにも与えられた[使用例](https://stackoverflow.com/questions/45804438/importing-a-lot-of-modules-in-angular)も同様に見つかりました:) – Mfried