export CUSTOM_ELEMENTS_SCHEMA
Defines a schema that will allow:
any non-Angular elements with a - in their name,
any properties on elements with a - in their name which is the common rule for custom elements.
因此,为了防止有人遇到这个问题,一旦您将 CUSTOM _ ELEMENT _ SCHEMA 添加到 NgModule 中,请确保您使用的任何新的自定义元素的名称中都有一个“破折号”,例如。等等。
<my-component>
<my-component-header>
<!-- this is optional -->
<p>html content here</p>
</my-component-header>
<p>blabla content</p>
<!-- other html -->
</my-component>
但是有一种简单而干净的方法可以解决这个问题——不用使用 <my-component-header>在插槽中插入 html ——您可以使用类名来完成这个任务,如下所示:
Html 文件:
<div>
<span>
<ng-content select=".my-component-header"> // <--- Look Here :)
<!-- optional header slot here -->
</ng-content>
</span>
<div class="my-component-content">
<ng-content>
<!-- content slot here -->
</ng-content>
</div>
</div>
< ! ——内容槽这里—— >
你想用它来表达:
<my-component>
<span class="my-component-header"> // <--- Look Here :)
<!-- this is optional -->
<p>html content here</p>
</span>
<p>blabla content</p>
<!-- other html -->
</my-component>
因此... 不再有不存在的组件,所以不存在任何问题,不存在错误,不需要 app.module.ts 中的 CUSTOM _ ELEMENT _ SCHEMA
因此,如果您像我一样,不想将 CUSTOM _ ELEMENT _ SCHEMA 添加到模块中,那么以这种方式使用组件不会产生错误,而且更加清晰。
但是有一种简单而干净的方法可以解决这个问题——不用使用 <my-component-header>在插槽中插入 html ——您可以使用类名来完成这个任务,如下所示:
Html 文件:
<div>
<span>
<ng-content select=".my-component-header"> // <--- Look Here :)
<!-- optional header slot here -->
</ng-content>
</span>
<div class="my-component-content">
<ng-content>
<!-- content slot here -->
</ng-content>
</div>
</div>
我认为你正在使用一个自定义模块。
你想用它来表达:
<my-component>
<span class="my-component-header"> // <--- Look Here :)
<!-- this is optional -->
<p>html content here</p>
</span>
<p>blabla content</p>
<!-- other html -->
</my-component>
因此... 不再有不存在的组件,所以不存在任何问题,不存在错误,不需要 app.module.ts 中的 CUSTOM _ ELEMENT _ SCHEMA
您可以尝试以下操作。
因此,如果您像我一样,不想将 CUSTOM _ ELEMENT _ SCHEMA 添加到模块中,那么以这种方式使用组件不会产生错误,而且更加清晰。
你也可以看到 https://scotch.io/tutorials/angular-2-transclusion-using-ng-content