Angular 2 RC6 - "侧边栏"不是一个已知的元素

时间:2016-09-02 09:15:50

标签: angular angular2-template

我刚刚更新到RC6并遇到以下错误:

  

zone.min.js:1未处理的承诺拒绝:模板解析错误:   '边栏'不是一个已知的元素:   1.如果'侧边栏'是一个Angular组件,然后验证它是否是此模块的一部分。   2.如果'侧边栏'是一个Web组件,然后添加" CUSTOM_ELEMENTS_SCHEMA"到' @ NgModule.schema'此组件禁止此消息。 ("

sidebar不是一个组件。只是我在我的一个模板中使用的html标签。它们看起来像这样:

...
<sidebar class="main-nav">
    ...
</sidebar>
...

我尝试使用CUSTOM_ELEMENTS_SCHEMA更新我的NgModule AppModule,如下所示:

@NgModule({
    declarations: [...],
    providers: [...],
    imports: [BrowserModule, routing, HttpModule, FormsModule, TranslateModule.forRoot()],
    bootstrap: [AppComponent],
    schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppModule { }

但这似乎没有做任何事情。

有没有人有想法或暗示?

2 个答案:

答案 0 :(得分:10)

感谢Pankaj Parkar的评论。

sidebar似乎还没有被接受。我必须实施一种解决方法。

<强> sidebar.directive.ts

import { Directive } from '@angular/core';

/**
 * dummy directive to allow html-tag "sidebar"
 */
@Directive({ selector: 'sidebar'})
export class SidebarDirective {}

将其加入app.module.ts

@NgModule({
    declarations: [..., SidebarDirective],
...
})
export class AppModule { }

答案 1 :(得分:4)

而不是去workaround我会说每当你想创建组件时,在组件选择器之前都有一些后缀。就像假设我的应用程序名称是MoneyManagement那样,我将在每个应用程序组件之前添加mm-。此习惯将减少与插件添加的任何保留HTML tag / elementsidebar组件发生冲突的可能性。

与此处添加bootstrap /任何插件组件(此处已定义sidebar组件)的解决方法不同。

遵循这样的约定将来会避免这个问题。

<mm-sidebar class="main-nav">
    ...
</mm-sidebar>