Angular Error: 'Component 'X' is not included in a module...' when declared in a sub module
Angular Error: 'Component 'X' is not included in a module...' when declared in a sub module
我正在尝试将我的对话整合到一个 Angular 模块中,但我在 IDE:
中遇到了 linting 错误
Component 'X' is not included in a module and will not be available
inside a template. Consider adding it to an NgModule declaration.
尽管出现此错误,应用程序仍能成功加载和运行。
示例组件定义
import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
export interface AlertDialogData {
titleText: string;
dismissalText: string;
contentComponent: string;
}
@Component({
selector: 'app-alert-dialog',
templateUrl: './alert-dialog.component.html',
styleUrls: ['./alert-dialog.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class AlertDialogComponent implements OnInit {
constructor(private dialogRef: MatDialogRef<AlertDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) { }
ngOnInit() {
}
handleCloseClick(): void {
this.dialogRef.close();
}
}
制作子模块Declaration/Export
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ZipLocatorDialogComponent } from './zip-locator-dialog/zip-locator-dialog.component';
import { AlertDialogComponent } from './alert-dialog/alert-dialog.component';
import { HelperDialogComponent } from './helper-dialog/helper-dialog.component';
import {
MatAutocompleteModule, MatButtonModule, MatDialogModule, MatFormFieldModule, MatInputModule,
MatSelectModule
} from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [
CommonModule,
FlexLayoutModule,
FormsModule,
ReactiveFormsModule,
MatDialogModule,
MatInputModule,
MatFormFieldModule,
MatSelectModule,
MatAutocompleteModule,
MatButtonModule
],
exports: [
ZipLocatorDialogComponent,
HelperDialogComponent,
AlertDialogComponent
],
declarations: [
ZipLocatorDialogComponent,
HelperDialogComponent,
AlertDialogComponent
],
entryComponents: [
ZipLocatorDialogComponent,
HelperDialogComponent,
AlertDialogComponent
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
]
})
export class AppDialogsModule { }
应用模块
// <editor-fold desc="Global Application Imports">
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { RouterModule } from '@angular/router';
import { RouteDefinitions } from './app.routes';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FlexLayoutModule } from '@angular/flex-layout';
import { WebWrapperModule } from 'web-wrapper';
import { UiComponentsModule } from './ui-components.module';
import { AppComponent } from './app.component';
// OPERATORS
import './rxjs-operators';
// SERVICES
import { LoginManagerService } from './services/login-manager.service';
import { UtilsService } from './services/utils.service';
import { DataManagerService } from './services/data-manager.service';
import { ReferenceDataManagerService } from './services/reference-data-manager.service';
import { InfrastructureApiService } from './services/infrastructure-api.service';
// </editor-fold>
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
FlexLayoutModule,
HttpClientModule,
WebWrapperModule,
UiComponentsModule,
AppDialogsModule,
RouterModule.forRoot(RouteDefinitions)
],
providers: [
UtilsService,
LoginManagerService,
DataManagerService,
InfrastructureApiService,
ReferenceDataManagerService
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
],
bootstrap: [AppComponent]
})
export class AppModule { }
版本
Angular CLI: 1.5.0
Node: 7.2.1
OS: win32 x64
Angular: 4.4.6
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, tsc-wrapped
@angular/cdk: 2.0.0-beta.12
@angular/cli: 1.5.0
@angular/flex-layout: 2.0.0-beta.11-b01c2d7
@angular/material: 2.0.0-beta.12
@angular-devkit/build-optimizer: 0.0.32
@angular-devkit/core: 0.0.20
@angular-devkit/schematics: 0.0.35
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.0
@schematics/angular: 0.1.2
typescript: 2.4.2
webpack: 3.8.1
首先:在 声明 部分 (app.module.ts
) 中声明所有组件。
如果问题仍然存在,我记得那是 beta angular-cli 版本的问题。
The issue you are running into is a variant of the baseUrl issue. The language service does not correctly respect the baseUrl option. For example, if you change the import of the shared module from app/shared/shared.module to ../shared/shared.module then the errors go away.
将 @angular/language-service
添加为 dev-dpendency
或
做npm install @angular/language-service
可以确认这已在 v5.2.9
中修复。 YMMV 与早期版本。
我遇到了同样的问题,问题是这样解决的:
1) 转到 Intellij / IDE 设置并勾选(设置)重新编译更改为:
2) 转到 tsconfig.json 并将 compileOnSave 设置为 true :
现在删除导致问题的@Component,然后重新键入@Component。
这对我有用 :) 祝你好运。
错误来自 Angular 语言服务 (https://github.com/angular/angular/issues/14961)。您可以通过清除设置中的 Angular 语言服务复选框来禁用它 |语言与框架 |打字稿
对于遇到此错误的任何人,解决方案是将组件添加到 NgModule 声明中,该声明可以在 'module.ts' 文件中找到。
对我来说,在声明组件的模块中缺少 CommonModule 的导入时发生了同样的错误。
@NgModule({
declarations: [ExampleComponent],
imports: [CommonModule],
})
export class ExampleModule {}
我正在尝试将我的对话整合到一个 Angular 模块中,但我在 IDE:
中遇到了 linting 错误Component 'X' is not included in a module and will not be available inside a template. Consider adding it to an NgModule declaration.
尽管出现此错误,应用程序仍能成功加载和运行。
示例组件定义
import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
export interface AlertDialogData {
titleText: string;
dismissalText: string;
contentComponent: string;
}
@Component({
selector: 'app-alert-dialog',
templateUrl: './alert-dialog.component.html',
styleUrls: ['./alert-dialog.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class AlertDialogComponent implements OnInit {
constructor(private dialogRef: MatDialogRef<AlertDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) { }
ngOnInit() {
}
handleCloseClick(): void {
this.dialogRef.close();
}
}
制作子模块Declaration/Export
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ZipLocatorDialogComponent } from './zip-locator-dialog/zip-locator-dialog.component';
import { AlertDialogComponent } from './alert-dialog/alert-dialog.component';
import { HelperDialogComponent } from './helper-dialog/helper-dialog.component';
import {
MatAutocompleteModule, MatButtonModule, MatDialogModule, MatFormFieldModule, MatInputModule,
MatSelectModule
} from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [
CommonModule,
FlexLayoutModule,
FormsModule,
ReactiveFormsModule,
MatDialogModule,
MatInputModule,
MatFormFieldModule,
MatSelectModule,
MatAutocompleteModule,
MatButtonModule
],
exports: [
ZipLocatorDialogComponent,
HelperDialogComponent,
AlertDialogComponent
],
declarations: [
ZipLocatorDialogComponent,
HelperDialogComponent,
AlertDialogComponent
],
entryComponents: [
ZipLocatorDialogComponent,
HelperDialogComponent,
AlertDialogComponent
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
]
})
export class AppDialogsModule { }
应用模块
// <editor-fold desc="Global Application Imports">
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { RouterModule } from '@angular/router';
import { RouteDefinitions } from './app.routes';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FlexLayoutModule } from '@angular/flex-layout';
import { WebWrapperModule } from 'web-wrapper';
import { UiComponentsModule } from './ui-components.module';
import { AppComponent } from './app.component';
// OPERATORS
import './rxjs-operators';
// SERVICES
import { LoginManagerService } from './services/login-manager.service';
import { UtilsService } from './services/utils.service';
import { DataManagerService } from './services/data-manager.service';
import { ReferenceDataManagerService } from './services/reference-data-manager.service';
import { InfrastructureApiService } from './services/infrastructure-api.service';
// </editor-fold>
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
FlexLayoutModule,
HttpClientModule,
WebWrapperModule,
UiComponentsModule,
AppDialogsModule,
RouterModule.forRoot(RouteDefinitions)
],
providers: [
UtilsService,
LoginManagerService,
DataManagerService,
InfrastructureApiService,
ReferenceDataManagerService
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
],
bootstrap: [AppComponent]
})
export class AppModule { }
版本
Angular CLI: 1.5.0
Node: 7.2.1
OS: win32 x64
Angular: 4.4.6
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, tsc-wrapped
@angular/cdk: 2.0.0-beta.12
@angular/cli: 1.5.0
@angular/flex-layout: 2.0.0-beta.11-b01c2d7
@angular/material: 2.0.0-beta.12
@angular-devkit/build-optimizer: 0.0.32
@angular-devkit/core: 0.0.20
@angular-devkit/schematics: 0.0.35
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.0
@schematics/angular: 0.1.2
typescript: 2.4.2
webpack: 3.8.1
首先:在 声明 部分 (app.module.ts
) 中声明所有组件。
如果问题仍然存在,我记得那是 beta angular-cli 版本的问题。
The issue you are running into is a variant of the baseUrl issue. The language service does not correctly respect the baseUrl option. For example, if you change the import of the shared module from app/shared/shared.module to ../shared/shared.module then the errors go away.
将 @angular/language-service
添加为 dev-dpendency
或
做npm install @angular/language-service
可以确认这已在 v5.2.9
中修复。 YMMV 与早期版本。
我遇到了同样的问题,问题是这样解决的:
1) 转到 Intellij / IDE 设置并勾选(设置)重新编译更改为:
2) 转到 tsconfig.json 并将 compileOnSave 设置为 true :
现在删除导致问题的@Component,然后重新键入@Component。
这对我有用 :) 祝你好运。
错误来自 Angular 语言服务 (https://github.com/angular/angular/issues/14961)。您可以通过清除设置中的 Angular 语言服务复选框来禁用它 |语言与框架 |打字稿
对于遇到此错误的任何人,解决方案是将组件添加到 NgModule 声明中,该声明可以在 'module.ts' 文件中找到。
对我来说,在声明组件的模块中缺少 CommonModule 的导入时发生了同样的错误。
@NgModule({
declarations: [ExampleComponent],
imports: [CommonModule],
})
export class ExampleModule {}