首页 文章

Angular 2 RC6 - “侧边栏”不是已知元素

提问于
浏览
4

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

zone.min.js:1未处理的Promise拒绝:模板解析错误:'sidebar'不是已知元素:1 . 如果'sidebar'是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 回答

  • 4

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

    与此处添加bootstrap /任何插件组件的解决方法不同,此处已经定义了 sidebar 组件 .

    遵循这样的惯例将来会避免这个问题 .

    <mm-sidebar class="main-nav">
        ...
    </mm-sidebar>
    
  • 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 {}
    

    Include it in app.module.ts

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

相关问题