11

Angular中有两个非常相似的命名指令(或属性)

ng-componentng-container

如果你把ng-component而不是ng-container你会得到各种奇怪的行为 - 例如自动插入一个<router-outlet>.

我经常想知道ng-component用户代码中是否真的有目的。

它是一个遗产吗?只是内部的吗?它可以解决任何问题吗?

4

2 回答 2

15

Angular 路由器使用路由器出口指令渲染它们导航到的组件。除非指定了特定的路由器出口指令,否则 Angular 会自动将路由组件放置在一个<ng-component>元素中(即,默认的路由器出口指令)。您通常不直接使用此指令。您可以使用<router-outlet>元素来调用它。换句话说,ng-component如果没有给出另一个指令,则它是注入元素的默认标记名称。

所以是的,它通常在内部使用。如此处所述:

您可以将样式附加到“ng-component”选择器;然而,鉴于父组件可能包含多个路由器出口元素(用于命名和未命名视图),提供唯一的本地句柄将使 CSS 选择器更加直观。

于 2019-08-29T04:18:29.307 回答
4

不知道为什么这会是有益的,但事实证明,如果您不指定选择器名称,那么您的组件将ng-component在 HTML 的标签中呈现。

@Component({ selector: '' })
于 2020-07-13T23:12:05.770 回答