我正在创建一个细分为不同应用程序的项目。例如,我想使用身份验证应用程序。
首先,让我们定义一次全局模块的含义。作为一个最小的例子,这里有几个列表。
FlexLayoutModule
CustomUIModule
这些模块必须在项目中声明一次。这是AppModule
@NgModule({
declarations: [
AppComponent,
],
imports: [
// Dependencies
BrowserModule,
BrowserAnimationsModule,
FlexLayoutModule,
CustomUIModule,
// Apps
AuthenticationModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
现在让我告诉你AuthenticationModule
。我只有这个模块的登录组件。
@NgModule({
declarations: [
LoginComponent,
],
exports: [
LoginComponent
],
})
export class AuthenticationModule { }
我的问题是LoginComponent
无法识别FlexLayoutModule
和CustomUIModule
个模块。但是,如果您将这些模块放在导入选项中,则可以解决此问题。 AuthenticationModule
。
但是那个疯狂的人,每当我创建另一个应用程序并执行相同的操作时,我不想这样做,因为这些模块是全局类型且必须声明。谁能有任何解决方案我如何构建我的应用程序?非常感谢。
更具体地说,我得到this error
:
Error: Template parse errors:'mat-[some-material-component]'is not a known element.
答案 0 :(得分:2)
根据指南:https://angular.io/guide/sharing-ngmodules
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { FlexLayoutModule} from './new-item.directive';
import { CustomUIModule } from './orders.pipe';
@NgModule({
imports: [ FlexLayoutModule,CustomUIModule, FormsModule, CommonModule ],
declarations: [ ],
exports: [ FlexLayoutModule,CustomUIModule, FormsModule, CommonModule ]
})
export class SharedModule { }
通过重新导出FlexLayoutModule,CustomUIModule, FormsModule, CommonModule
,导入此SharedModule
的任何其他模块都可以访问导出的成员。