我刚刚使用ng2 cli安装了一个bearbones ng2 app。在我的AppModule
我添加了schema: [ CUSTOM_ELEMENTS_SCHEMA ]
,在我的AppComponent
模板中,我有<row></row>
。但是我得到了 -
未处理的承诺拒绝:模板解析错误: &#39;行&#39;不是一个已知的元素: 1.如果&#39; row&#39;是一个Angular组件,然后验证它是否是此模块的一部分。 2.如果&#39; row&#39;是一个Web组件,然后添加&#34; CUSTOM_ELEMENTS_SCHEMA&#34;到了&#39; @ NgModule.schemas&#39;此组件禁止此消息。 (&#34; [错误 - &gt;]
的AppModule -
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppModule { }
AppComponent -
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {}
AppComponentTemplate -
<row></row>
真的那么简单。到底是怎么回事?
修改
以下所有答案都令人满意,并提供了对问题的深入了解。 @yurzui我特别喜欢你提供源代码的答案。我希望我能给你所有接受的答案!但我会选择@camaron作为第一个并直接解决我的问题。如果您通过谷歌找到这个问题,请给@yurzui,@camaron和@Aravind +1以帮助解决这个问题!
答案 0 :(得分:12)
您需要添加RowComponent
AppModule
imports: [RowComponent]
编辑:
使用NO_ERRORS_SCHEMA
,这是因为angular正在尝试查找不存在的组件。
CUSTOM_ELEMENTS_SCHEMA
适用于选择器名称中包含-
的组件。
答案 1 :(得分:5)
如果您查看更改日志https://github.com/angular/angular/blob/master/CHANGELOG.md#200-rc5-2016-08-09
默认情况下,Angular在解析未知属性时会出错, 即使,如果他们的名字中包含 - ,名称 (又名自定义) 的元素)即可。如果您的应用程序使用自定义元素,请填写新元素 参数@ NgModule.schemas,其值为[CUSTOM_ELEMENTS_SCHEMA]。
然后您就可以理解,您需要使用-
分隔符
if (tagName.indexOf('-') > -1) {
if (tagName === 'ng-container' || tagName === 'ng-content') {
return false;
}
if (schemaMetas.some((schema) => schema.name === CUSTOM_ELEMENTS_SCHEMA.name)) {
// Can't tell now as we don't know which properties a custom element will get
// once it is instantiated
return true;
}
}
所以像my-row
这样的东西应该起作用
答案 2 :(得分:3)
以下是您的错误
<row>
为模板的元素。<app-root>
是AppComponent的选择器,但您在AppComponent的html中使用了<row>
。根据您的要求,我可以提出各种修正建议。评论您想要的结果,我将根据它们更新答案。