在嵌套组件中嵌套 Angular 组件

Posted

技术标签:

【中文标题】在嵌套组件中嵌套 Angular 组件【英文标题】:Nesting Angular component inside nested component 【发布时间】:2017-12-31 05:17:17 【问题描述】:

伙计们!

我的问题是我将组件嵌套在另一个组件中,该组件是路由的组件。它是这样的:(带有router-outlet 的主组件)AppComponent -> LeaderComponent -> NavigationPathComponent。在最后一个组件中,我使用@Input() 从父级检索一些值,它在组件代码中有效,但在模板中无效。

这是我的代码:NavigationPathComponent:

import  Component, Input  from "@angular/core";
@Component(
    selector: "navigation-path",
    template: "los",
    style: "irrelevant"]
)

export class NavigationPathComponent 
    @Input() los: string;

在 LeaderComponent 模板里面有:

<navigation-path los="someString"></navigation-path>

这会导致如果我将los 添加到<navigation-path> 模板中,它应该在浏览器中输出someString,但它什么也不输出。虽然如果我在组件代码中将其注销,它会将someString 输出到控制台。

附:如果我将<navigation-path> 移动到 AppComponent 模板(嵌套级别更高)中,它会完美运行。甚至可以将组件嵌套在 Angular 中已经嵌套的组件中吗?目前我正在开发 Angular v4.2.4。

【问题讨论】:

【参考方案1】:

传递属性时,您需要在属性周围使用 [] 语法: 这将是 [los]="someString"。

【讨论】:

那为什么它在组件代码中可见,但在模板中不可见?附言不幸的是,你的建议没有奏效。 :( 代码对我来说看起来不错。我一直使用带有 html 页面的 templateUrl。尝试在使用 ngOnInit 初始化 NavigationPathComponent 时在控制台记录“los”。 问题是它有一个价值。它将 someString 记录到控制台(或警报取决于我决定如何显示它。

以上是关于在嵌套组件中嵌套 Angular 组件的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 12 中嵌套组件 - “范围”的问题

Angular 8 组件嵌套在同一个组件事件发射器内

在 Angular 指令中查找嵌套组件

Angular 在父组件嵌套表单中使用子组件表单

在 Angular 2+ 中,使用路由器插座和嵌套组件有啥区别

Angular 9 嵌套延迟加载模块,带有嵌套路由器出口