如何在不创建中间变量的情况下从Angular 5中的父项设置子项(或n级子组件)的子项的属性 . 例如,假设我有一个子组件,如下所示 .
@Component({
selector: 'app-child11',
template: '<p>
child11 works!
Name is {{name}}</p>',
styleUrls: ['./child11.component.css']
})
export class Child11Component implements OnInit {
@Input() name: string;
constructor() {}
ngOnInit() {}
}
让我们说我的child11的父亲是child1,如下所示
@Component({
selector: 'app-child1',
template: '<p>child1 works!<app-child11 name="Karthik"></app-child11></p>',
styleUrls: ['./child1.component.css']
})
export class Child1Component implements OnInit {
constructor() {}
ngOnInit() {}
}
并且父组件如下所示
@Component({
selector: 'app-root',
template: '<div><app-child1></app-child1></div>',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
}
现在我如何修改app-root的模板,以便我可以直接在app-root中设置child11的名称值,而不在Child1中引入传播到AppComponent的变量?
2 回答
如果我想这样做,我宁愿使用绑定组件输入而不是简单输入 .
我准备的代码是 .
app.component.ts
app.component.html
现在无论你在app-root组件中的输入标签内写什么都将到达app-child11,最后它将在那里打印 .
我希望它可以帮到你 .
如果您不想创建中间变量,可以创建
Service
,例如ChildService
. Service Guide . 创建child$: Observable<any[]>
或child$$: Subject<any[]>
并订阅Child11Component
:你的
this.child
变量有必要的孩子 .