我想实现自动完成功能,所以我发现的一个相同的选项是使用多选下拉菜单。所以我使用了这个模块 -
https://www.npmjs.com/package/ng-multiselect-dropdown
但是在同上实施之后,我收到这些错误 -
错误-
ERROR Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'placeholder' since it isn't a known property of 'ng-
multiselect-dropdown'.
1. If 'placeholder' is an Angular directive, then add 'CommonModule'
to the '@NgModule.imports' of this component.
2. To allow any property add 'NO_ERRORS_SCHEMA' to the
'@NgModule.schemas' of this component. ("
<ng-multiselect-dropdown
[ERROR ->][placeholder]="'custom placeholder'"
[data]="dropdownList"
[(ngModel)]="selectedItems"
"): ng:///AdminLayoutModule/HierarchySearchComponent.html@7:0
当我在 component.html 中评论占位符时,我收到此错误 -
Can't bind to 'data' since it isn't a known property of 'ng-
multiselect-dropdown'.
1. If 'data' is an Angular directive, then add 'CommonModule' to the
'@NgModule.imports' of this component.
2. To allow any property add 'NO_ERRORS_SCHEMA' to the
'@NgModule.schemas' of this component.
"
<ng-multiselect-dropdown
[placeholder]="'custom placeholder'"
[ERROR ->][data]="dropdownList"
[(ngModel)]="selectedItems"
[settings]="dropdownSettings"
"): ng:///AdminLayoutModule/HierarchySearchComponent.html@8:2
类似的错误一直持续到最后一个属性。
更新
app.module.ts
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { AppRoutingModule } from './app.routing';
import { ComponentsModule } from './components/components.module';
import { AppComponent } from './app.component';
import { AdminLayoutComponent } from './layouts/admin-layout/admin-layout.component';
//------------- Imported Modules -------------------------
import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
import { CommonModule } from '@angular/common';
@NgModule({
imports: [
BrowserAnimationsModule,
FormsModule,
HttpModule,
ComponentsModule,
RouterModule,
AppRoutingModule,
NgbModule.forRoot(),
NgMultiSelectDropDownModule.forRoot(),
CommonModule,
],
declarations: [
AppComponent,
AdminLayoutComponent,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
HierarchySearchComponent - 这是您正在使用的组件
ng-multiselect-dropdown
。
所以你可能会有 HierarchySearch.module.ts。
您只需从 app.module.ts 中的 import:[] 中删除 NgMultiSelectDropDownModule.forRoot() 并导入到 HierarchySearch.module.ts 中。
它会起作用的。!
在 ComponentsModule 中添加多选导入,您可以在其中导入所有组件。它对我有用。
我遇到了这个问题并解决了 添加
import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
和
@NgModule({
imports: [
NgMultiSelectDropDownModule
]
})
导入组件的xxxx.module.ts文件,而不是app.module.ts文件
检查是否导入了 NgMultiSelectDropDownModule 到 module.ts
import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
@NgModule({
imports: [
NgMultiSelectDropDownModule
],
我也在使用 Angular 7 但我的问题已经解决了。我只需导入
NO_ERRORS_SCHEMA
并包含在包含 ng-multiselect-dropdown
模块的同一模块中 @NgModule
:
import { NgModule ,NO_ERRORS_SCHEMA} from '@angular/core';
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
CommonModule,
FormsModule,
AngularMultiSelectModule,
],
schemas:[NO_ERRORS_SCHEMA],
})
export class SettingsModule { }
如果您在单元测试中遇到此错误,您需要将该模块添加到
imports
中的
TestBed.configureTestingModule
中
await TestBed.configureTestingModule({
declarations: [YourComponent, ...MockComponents(...)],
imports: [
NgMultiSelectDropDownModule
],
providers: [...
...
通常,当您错过了某些导入时,就会出现此错误。如果缺少,请添加这些行:
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';